浏览 2653 次
锁定老帖子 主题:ListView[详解]
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-06-16
列表的显示需要三个元素: (1)ArrayAdapter(Context context, int textViewResourceId, List<T> objects)来装配数据 (2)SimpleCursorAdapter 构造函数前面3个参数和ArrayAdapter是一样的,最后两个参数:一个包含数据库的列的String型数组,一个包含布局文件中对应组件id的int型数组 (3)SimpleAdapter(Context context,List<Map<String,Object> mData,int textViewResourceId, new String[]{}, new int[]{}); 下面重点介绍自定义Adapter来适配ListView
package com.cn.listview; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.AlertDialog; import android.app.ListActivity; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.*; public class ListView04 extends ListActivity { private List<Map<String,Object>> mData; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mData=getData(); MyAdapter mAdapter=new MyAdapter(this); setListAdapter(mAdapter); } private List<Map<String,Object>> getData(){ List<Map<String,Object>> list=new ArrayList<Map<String,Object>>(); Map<String,Object> map=new HashMap<String,Object>(); map.put("title", "title01"); map.put("info", "info01"); map.put("img", R.drawable.icon); list.add(map); map=new HashMap<String,Object>(); map.put("title", "title02"); map.put("info", "info02"); map.put("img", R.drawable.icon); list.add(map); return list; } public void showInfo(){ new AlertDialog.Builder(this) .setTitle("myListView") .setMessage("instruction") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { } }).show(); } public final class ViewHolder{ public ImageView img; public TextView title; public TextView info; public Button viewBtn; } public class MyAdapter extends BaseAdapter{ private LayoutInflater mflater; public MyAdapter(Context mContext){ this.mflater=LayoutInflater.from(mContext); } @Override public int getCount() { // TODO Auto-generated method stub return mData.size(); } @Override public Object getItem(int arg0) { return null; } @Override public long getItemId(int arg0) { return 0; } @Override public View getView(int arg0, View arg1, ViewGroup arg2) { ViewHolder holder=null; if (arg1==null) { holder=new ViewHolder(); arg1=mflater.inflate(R.layout.main, null); holder.img=(ImageView)arg1.findViewById(R.id.img); holder.title=(TextView)arg1.findViewById(R.id.title); holder.info=(TextView)arg1.findViewById(R.id.info); holder.viewBtn=(Button)arg1.findViewById(R.id.btn); arg1.setTag(holder); }else{ holder=(ViewHolder)arg1.getTag(); } holder.img.setBackgroundResource((Integer)mData.get(arg0).get("img")); holder.title.setText((String)mData.get(arg0).get("title")); holder.info.setText((String)mData.get(arg0).get("info")); holder.viewBtn.setOnClickListener(new btn_click()); return arg1; } class btn_click implements OnClickListener{ @Override public void onClick(View arg0) { // TODO Auto-generated method stub showInfo(); } } } } <?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="fill_parent"> <ImageView android:id="@+id/img" android:layout_width="45px" android:layout_height="45px" /> <TableLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="0"> <TableRow> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="left"> <TextView android:textSize="16px" android:textColor="#ffffff" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/title" /> <TextView android:textSize="13px" android:textColor="#ffffff" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/info" /> </LinearLayout> <Button android:id="@+id/btn" android:text="@string/viewBtn" android:layout_width="65px" android:layout_height="wrap_content" /> </TableRow> </TableLayout> </LinearLayout> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |