Android之--自定义ListView
来源:互联网 发布:spss如何将数据分组 编辑:程序博客网 时间:2024/06/08 08:48
Android系统自带的ListView控件,能展示的内容有限,往往达不到实际项目开发的要求。想实现图文混合显示,需要自定义ListView并重写Adapter。
本文自定义ListView来展示水果图片、名称及价格
1、定义ListView要展示的fruit类
public class Fruit { private String name; private double price; private int imageID; public double getPrice() { return price; } public String getName() { return name; } public int getImageID() { return imageID; } public Fruit(String name,int id,double price) { this.name = name; this.imageID = id; this.price = price; } public Fruit() {}}
2、ListView需要Adapter填充内容。这里继承ArrayAdapter,自定义适配器类FruitAdapter
public class FruitAdapter extends ArrayAdapter<Fruit> { int resourceID; public FruitAdapter(Context context, int textViewResourceId, List<Fruit> objects) { super(context, textViewResourceId, objects); resourceID = textViewResourceId; } @Override public View getView(int position, View convertView, ViewGroup parent) { Fruit fruit = getItem(position); View view ; ViewHolder viewHolder; //view对象为空时,给它赋值。避免每次findViewById来提高ListView的效率 if (convertView == null) { view = LayoutInflater.from(getContext()).inflate(resourceID, null); viewHolder = new ViewHolder(); viewHolder.fruitimage = (ImageView)view.findViewById(R.id.fruit_image); viewHolder.fruitname = (TextView)view.findViewById(R.id.fruit_name); viewHolder.fruitprice = (TextView)view.findViewById(R.id.fruit_price); view.setTag(viewHolder); //viewholder 存储在view中 }else { view = convertView; viewHolder = (ViewHolder)view.getTag(); } //给ListView中的每一项赋值 viewHolder.fruitimage.setImageResource(fruit.getImageID()); viewHolder.fruitname.setText(fruit.getName()); viewHolder.fruitprice.setText(String.valueOf(fruit.getPrice())); return view; } class ViewHolder{ ImageView fruitimage; TextView fruitname,fruitprice; }}
3、ListView项目的布局xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/fruit_image" android:layout_width="75sp" android:layout_height="75sp" /> <TextView android:id="@+id/fruit_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="80dip" android:textSize="20sp" android:text="apple" /> <TextView android:id="@+id/fruit_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_alignParentRight="true" android:layout_marginRight="70dip" android:text="单价:" android:textSize="20sp" /></RelativeLayout>
在Activity中显示
public class ListViewActivity extends Activity { private List<Fruit> fruitlist = new ArrayList<Fruit>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); InitFruits(); FruitAdapter adapter = new FruitAdapter(ListViewActivity.this, R.layout.fruit, fruitlist); ListView list = (ListView)findViewById(R.id.listView); list.setAdapter(adapter); } }; private void InitFruits() { // TODO Auto-generated method stub fruitlist.add(new Fruit("Apple", R.drawable.apple512,1.26)); fruitlist.add(new Fruit("Banana", R.drawable.banana512,2.2)); fruitlist.add(new Fruit("Orange", R.drawable.orange512,5.0)); fruitlist.add(new Fruit("Lemon", R.drawable.lemon512,4.3)); fruitlist.add(new Fruit("Pear", R.drawable.pear512,3.5)); fruitlist.add(new Fruit("Tomato", R.drawable.tomato512,2.6)); fruitlist.add(new Fruit("Kiwi", R.drawable.kiwi512,1.9)); fruitlist.add(new Fruit("Peach", R.drawable.peach512,5)); fruitlist.add(new Fruit("Cherry", R.drawable.cherry512,10)); }
实际效果:
待续:
当拖动listview项时,要因图片显示过多,内在溢出程序异常退出,这个问题未解决
0 0
- Android之--自定义ListView
- Android之自定义ListView
- Android之自定义ListView
- android之ListView自定义布局
- Android之自定义Adapter的ListView
- 【转】Android之自定义Adapter的ListView
- Android之自定义Adapter的ListView
- Android 自定义ListView系列之适配器模式
- Android之自定义Adapter的ListView
- Android之自定义Adapter的ListView
- Android之自定义ListView滚动条样式
- Android之自定义Adapter的ListView
- [转载]Android之自定义Adapter的ListView
- Android之自定义Adapter的ListView
- Android之自定义Adapter的ListView
- Android之自定义Adapter的ListView
- Android之自定义ListView滚动条样式
- android之自定义适配器实现ListView
- 大神亲传:26条深度学习的金科玉律!
- 排序算法
- Android TTS说中文
- 求字符数组的全排列算法
- Mysql几种索引类型的区别及适用情况
- Android之--自定义ListView
- DRIVER_OBJECT,DEVICE_OBJECT 结构体分析
- Web Service和WCF的到底有什么区别
- Design库,全部控件的使用
- 【HWOJ】计算字符个数
- 今天创建了CSDN博客,用于记录自己的学习经历
- java排序算法二分法 希尔排序 快速排序 归并排序
- 实现Runnable接口创建线程,并验证同步函数this锁--存疑
- MFC开发 常见控件库