Android GridView 横向滚动 一行显示

news/2024/7/7 7:16:19

都知道gridview和listview是android比较重要的数据组件,

接到一个横向显示数据的任务,头大半天,最后只能用gridview试试了。呵呵,费了N多脑细胞,搞定。

=====

布局文件main.xml

[java]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout   
  3.     xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:orientation="vertical"   
  5.     android:layout_width="fill_parent"  
  6.     android:layout_height="fill_parent"  
  7.     android:background="#FFFFFF"  
  8.     android:gravity="center">  
  9.     <TextView   
  10.         android:layout_width="wrap_content"  
  11.         android:layout_height="wrap_content"  
  12.         android:text="向右滑动"  
  13.         android:textColor="#000000"  
  14.         android:textSize="20dip"/>  
  15.     <HorizontalScrollView   
  16.         android:layout_width="fill_parent"   
  17.         android:layout_height="wrap_content"  
  18.         android:background="#CCCCCC">  
  19.         <LinearLayout   
  20.             android:layout_width="fill_parent"  
  21.             android:layout_height="wrap_content"  
  22.              android:orientation="horizontal">  
  23.             <GridView   
  24.                 android:id="@+id/gridView"   
  25.                 android:layout_width="fill_parent"  
  26.                 android:layout_height="wrap_content" />  
  27.         </LinearLayout>  
  28.     </HorizontalScrollView>  
  29. </LinearLayout>  

类文件MainActivity.java

[java]  view plain copy
  1. package com.test;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4. import android.app.Activity;  
  5. import android.content.Context;  
  6. import android.os.Bundle;  
  7. import android.os.Handler;  
  8. import android.os.Message;  
  9. import android.view.LayoutInflater;  
  10. import android.view.View;  
  11. import android.view.ViewGroup;  
  12. import android.view.Window;  
  13. import android.widget.AdapterView;  
  14. import android.widget.BaseAdapter;  
  15. import android.widget.GridView;  
  16. import android.widget.ImageView;  
  17. import android.widget.TextView;  
  18. import android.widget.AdapterView.OnItemClickListener;  
  19. import android.widget.LinearLayout.LayoutParams;  
  20. public class MainActivity extends Activity {  
  21.     private GridView gridView;  
  22.     private List<Item> itemList;  
  23.     private MyListAdapter adapter;  
  24.     private ItemClickEvent listener;  
  25.     private MyHandler handler;  
  26.       
  27.     public void onCreate(Bundle savedInstanceState) {  
  28.         super.onCreate(savedInstanceState);  
  29.         requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);  
  30.         setContentView(R.layout.main);  
  31.         gridView = (GridView) findViewById(R.id.gridView);  
  32.         handler = new MyHandler();  
  33.         new Thread() {  
  34.             public void run() {  
  35.                 itemList = new ArrayList<Item>();  
  36.                 for(int i=0;i<10;i++){  
  37.                     Item item = new Item("北极熊生存如履薄冰" + i,"如果我们从现在开始就采取措施降低气温" + i);  
  38.                     itemList.add(item);  
  39.                 }  
  40.                 Message msg = Message.obtain();  
  41.                 msg.what = 1;  
  42.                 handler.sendMessage(msg);  
  43.             }  
  44.         }.start();  
  45.     }  
  46.       
  47.     private class MyHandler extends Handler{  
  48.         public void handleMessage(Message msg) {  
  49.             switch (msg.what) {  
  50.             case 1:  
  51.                 if ((itemList == null) || (itemList.size() == 0)) {  
  52.                     return;  
  53.                 } else {  
  54.                     LayoutParams params = new LayoutParams(itemList.size() * (420 + 6), LayoutParams.WRAP_CONTENT);  
  55.                     gridView.setLayoutParams(params);  
  56.                     gridView.setColumnWidth(420);  
  57.                     gridView.setHorizontalSpacing(6);  
  58.                     gridView.setStretchMode(GridView.NO_STRETCH);  
  59.                     gridView.setNumColumns(itemList.size());  
  60.                       
  61.                     adapter = new MyListAdapter(MainActivity.this);  
  62.                     listener = new ItemClickEvent();  
  63.                     gridView.setAdapter(adapter);  
  64.                     gridView.setOnItemClickListener(listener);  
  65.                 }  
  66.                 break;  
  67.             }  
  68.         }  
  69.     }  
  70.       
  71.     private class MyListAdapter extends BaseAdapter {  
  72.         private final String TAG = "MyListAdapter";  
  73.         private LayoutInflater mInflater;  
  74.         private final Context context;  
  75.         public MyListAdapter(Context context) {  
  76.             this.context = context;  
  77.             mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
  78.         }  
  79.         public int getCount() {  
  80.             return itemList.size();  
  81.         }  
  82.         public Object getItem(int position) {  
  83.             return itemList.get(position);  
  84.         }  
  85.         public long getItemId(int position) {  
  86.             return position;  
  87.         }  
  88.         public View getView(int position, View convertView, ViewGroup parent) {  
  89.             Item item = itemList.get(position);  
  90.             CellHolder cellHolder;  
  91.             if (convertView == null) {  
  92.                 cellHolder = new CellHolder();  
  93.                 convertView = mInflater.inflate(R.layout.item, null);  
  94.                 cellHolder.ivIcon = (ImageView) convertView.findViewById(R.id.ivIcon);  
  95.                 cellHolder.tvTitle = (TextView) convertView.findViewById(R.id.tvTitle);  
  96.                 cellHolder.tvContent = (TextView) convertView.findViewById(R.id.tvContent);  
  97.                 convertView.setTag(cellHolder);  
  98.             }else{  
  99.                 cellHolder = (CellHolder) convertView.getTag();  
  100.             }  
  101.             cellHolder.ivIcon.setImageResource(R.drawable.bear);  
  102.             cellHolder.tvTitle.setText(item.getTitle());  
  103.             cellHolder.tvContent.setText(item.getContent());  
  104.             return convertView;  
  105.         }  
  106.     }  
  107.       
  108.     private class CellHolder{  
  109.         ImageView ivIcon;  
  110.         TextView tvTitle;  
  111.         TextView tvContent;  
  112.     }  
  113.       
  114.     private class ItemClickEvent implements OnItemClickListener{  
  115.         public void onItemClick(AdapterView<?> parent, View view, int position,  
  116.                 long id) {  
  117.               
  118.         }  
  119.           
  120.     }  
  121. }  

Item

[java]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout   
  3.     xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:orientation="horizontal"   
  5.     android:layout_width="fill_parent"  
  6.     android:layout_height="wrap_content"  
  7.     android:padding="10dip"  
  8.     android:background="#FFFFFF">  
  9.     <ImageView   
  10.         android:id="@+id/ivIcon"  
  11.         android:layout_width="wrap_content"  
  12.         android:layout_height="wrap_content"  
  13.         android:src="@drawable/icon"  
  14.         android:layout_marginRight="10dip"/>  
  15.     <LinearLayout   
  16.         android:orientation="vertical"   
  17.         android:layout_width="fill_parent"  
  18.         android:layout_height="wrap_content"  
  19.         >  
  20.         <TextView   
  21.             android:id="@+id/tvTitle"  
  22.             android:layout_width="wrap_content"  
  23.             android:layout_height="wrap_content"  
  24.             android:text="标题标题标题标题标题"  
  25.             android:textColor="#000000"  
  26.             android:textSize="20dip"  
  27.             android:textStyle="bold"/>     
  28.         <TextView   
  29.             android:id="@+id/tvContent"  
  30.             android:layout_width="wrap_content"  
  31.             android:layout_height="wrap_content"  
  32.             android:text="内容内容内容内容内容内容内容"  
  33.             android:textColor="#000000"/>      
  34.     </LinearLayout>     
  35. </LinearLayout>  


http://www.niftyadmin.cn/n/4472219.html

相关文章

JAVA 获取两个日期间的所有日期

2019独角兽企业重金招聘Python工程师标准>>> public static List<String> getDates(Date startDate, Date endDate){ SimpleDateFormat sdf new SimpleDateFormat("yyyyMMdd"); List<String> dates new ArrayLis…

navicat报错SSH:Unable to load key

navicat的版本比较老了。在加载ssh的pub key时报这个错。这个private key确实可以用来登录服务器。而且navicat也能够加载以前的private key&#xff0c;那么问题只有一个&#xff1a;文件有问题 我的解决办法是安装新版的navicat&#xff0c;问题已解决&#xff01;

Error: Error while compiling statement: FAILED: SemanticException Schema of both sides of union shou

sqoop任务导数据到hive报错&#xff1a; Error: Error while compiling statement: FAILED: SemanticException Schema of both sides of union should match. (state42000,code40000) 原因是hive中做union时&#xff0c;查询到的两个表的有差异&#xff0c;列名不一致。删除…

用GridView实现Gallery的效果

本帖最后由 likeyou 于 2011-11-7 21:01 编辑 在实现横向的类似Gallery的效果中做了实现Gallery的尝试&#xff0c;但是效果不好。使用的是TableLayout&#xff0c;出现了横向拖动图片的时候&#xff0c;因为有倾斜&#xff08;轻微的竖向拖动&#xff09;&#xff0c;会整个…

如何写出一手好的小程序之多端架构篇

作为微信小程序底层 API 维护者之一&#xff0c;经历了风风雨雨、各种各样的吐槽。为了让大家能更好的写一手小程序&#xff0c;特地梳理一篇文章介绍。如果有什么吐槽的地方&#xff0c;欢迎去 developers.weixin.qq.com/ 开发者社区吐槽。 PS: 老板要找人&#xff0c;对自己有…

利用反射机制,封装 SAX解释类,从而解释网络xml文件

利用反射机制&#xff0c;封装 SAX解释类&#xff0c;从而解释网络xml文件个人觉得&#xff0c;在android应用开发领域中&#xff0c;与服务器交互是必不可少的。一般都是以解释xml为主要。其实获取网络上的xml和获取本地xml原理一样&#xff0c;只是获取网络xml 多了一层http…

数据分析展现工具SmartBI

数据分析展现工具SmartBIBIhttps://blog.csdn.net/bingoxubin/article/details/78720104?utm_sourceblogxgwz0转载于:https://www.cnblogs.com/zhanying999666/p/9816201.html

菜单仿(ActionBar)

----- 使用纯布局实现&#xff0c;子菜单可以根据子需求改为gridview或者listview 中间内容为viewpager可以根据菜单的更改切换内容 也可以把整个菜单封装起来 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758…