都知道gridview和listview是android比较重要的数据组件,
接到一个横向显示数据的任务,头大半天,最后只能用gridview试试了。呵呵,费了N多脑细胞,搞定。
=====
布局文件main.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:background="#FFFFFF"
- android:gravity="center">
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="向右滑动"
- android:textColor="#000000"
- android:textSize="20dip"/>
- <HorizontalScrollView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:background="#CCCCCC">
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
- <GridView
- android:id="@+id/gridView"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
- </LinearLayout>
- </HorizontalScrollView>
- </LinearLayout>
类文件MainActivity.java
- package com.test;
- import java.util.ArrayList;
- import java.util.List;
- import android.app.Activity;
- import android.content.Context;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.view.Window;
- import android.widget.AdapterView;
- import android.widget.BaseAdapter;
- import android.widget.GridView;
- import android.widget.ImageView;
- import android.widget.TextView;
- import android.widget.AdapterView.OnItemClickListener;
- import android.widget.LinearLayout.LayoutParams;
- public class MainActivity extends Activity {
- private GridView gridView;
- private List<Item> itemList;
- private MyListAdapter adapter;
- private ItemClickEvent listener;
- private MyHandler handler;
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
- setContentView(R.layout.main);
- gridView = (GridView) findViewById(R.id.gridView);
- handler = new MyHandler();
- new Thread() {
- public void run() {
- itemList = new ArrayList<Item>();
- for(int i=0;i<10;i++){
- Item item = new Item("北极熊生存如履薄冰" + i,"如果我们从现在开始就采取措施降低气温" + i);
- itemList.add(item);
- }
- Message msg = Message.obtain();
- msg.what = 1;
- handler.sendMessage(msg);
- }
- }.start();
- }
- private class MyHandler extends Handler{
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case 1:
- if ((itemList == null) || (itemList.size() == 0)) {
- return;
- } else {
- LayoutParams params = new LayoutParams(itemList.size() * (420 + 6), LayoutParams.WRAP_CONTENT);
- gridView.setLayoutParams(params);
- gridView.setColumnWidth(420);
- gridView.setHorizontalSpacing(6);
- gridView.setStretchMode(GridView.NO_STRETCH);
- gridView.setNumColumns(itemList.size());
- adapter = new MyListAdapter(MainActivity.this);
- listener = new ItemClickEvent();
- gridView.setAdapter(adapter);
- gridView.setOnItemClickListener(listener);
- }
- break;
- }
- }
- }
- private class MyListAdapter extends BaseAdapter {
- private final String TAG = "MyListAdapter";
- private LayoutInflater mInflater;
- private final Context context;
- public MyListAdapter(Context context) {
- this.context = context;
- mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- }
- public int getCount() {
- return itemList.size();
- }
- public Object getItem(int position) {
- return itemList.get(position);
- }
- public long getItemId(int position) {
- return position;
- }
- public View getView(int position, View convertView, ViewGroup parent) {
- Item item = itemList.get(position);
- CellHolder cellHolder;
- if (convertView == null) {
- cellHolder = new CellHolder();
- convertView = mInflater.inflate(R.layout.item, null);
- cellHolder.ivIcon = (ImageView) convertView.findViewById(R.id.ivIcon);
- cellHolder.tvTitle = (TextView) convertView.findViewById(R.id.tvTitle);
- cellHolder.tvContent = (TextView) convertView.findViewById(R.id.tvContent);
- convertView.setTag(cellHolder);
- }else{
- cellHolder = (CellHolder) convertView.getTag();
- }
- cellHolder.ivIcon.setImageResource(R.drawable.bear);
- cellHolder.tvTitle.setText(item.getTitle());
- cellHolder.tvContent.setText(item.getContent());
- return convertView;
- }
- }
- private class CellHolder{
- ImageView ivIcon;
- TextView tvTitle;
- TextView tvContent;
- }
- private class ItemClickEvent implements OnItemClickListener{
- public void onItemClick(AdapterView<?> parent, View view, int position,
- long id) {
- }
- }
- }
Item
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:padding="10dip"
- android:background="#FFFFFF">
- <ImageView
- android:id="@+id/ivIcon"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/icon"
- android:layout_marginRight="10dip"/>
- <LinearLayout
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- >
- <TextView
- android:id="@+id/tvTitle"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="标题标题标题标题标题"
- android:textColor="#000000"
- android:textSize="20dip"
- android:textStyle="bold"/>
- <TextView
- android:id="@+id/tvContent"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="内容内容内容内容内容内容内容"
- android:textColor="#000000"/>
- </LinearLayout>
- </LinearLayout>