public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { Fruit fruit=fruitList.get(position); Toast.makeText(MainActivity.this, fruit.getName(), Toast.LENGTH_SHORT).show(); } });
}
private void initFruits() { Fruit apple = new Fruit("张志鹏", R.drawable.p1,"好帅","2分钟前"); fruitList.add(apple); Fruit banana = new Fruit("如果一个人哭了", R.drawable.p2,"两个人就会快乐","4分钟前"); fruitList.add(banana); Fruit orange = new Fruit("哇塞", R.drawable.p3,"哗哗的大雨!","5分钟前"); fruitList.add(orange); Fruit watermelon = new Fruit("枫叶", R.drawable.p4,"秋天的感觉","2小时前"); fruitList.add(watermelon); Fruit pear = new Fruit("树叶", R.drawable.p5,"夏天!","3小时前"); fruitList.add(pear); Fruit grape = new Fruit("甜蜜蜜", R.drawable.p6,"爱情!","5小时前"); fruitList.add(grape); Fruit pineapple = new Fruit(" 平凡的世界", R.drawable.p7,"平凡的你","2天前"); fruitList.add(pineapple); Fruit strawberry = new Fruit("安静", R.drawable.p8,"今晚约吗?","5天前"); fruitList.add(strawberry); Fruit cherry = new Fruit("雨", R.drawable.p10,"雪","1周前"); fruitList.add(cherry);
}
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }
//存在问题:在FruitAdapter的getView()方法中每次都将布局重新加载了一遍,当ListView快速滚动的时候这就会成为性能的瓶颈 public class FruitAdapter extends ArrayAdapter<Fruit> { private int resourceId; public FruitAdapter(Context context, int textViewResourceId, List<Fruit> data) { super(context, textViewResourceId, data); resourceId=textViewResourceId; }
//我们新增了一个内部类ViewHolder,用于对控件的实例进行缓存。 //当convertView为空的时候,创建一个ViewHolder对象,并将控件的实例都存放在ViewHolder里,然后调用View的setTag()方法,将ViewHolder对象存储在View中。 //当convertView不为空的时候则调用View的getTag()方法,把ViewHolder重新取出。 //这样所有控件的实例都缓存在了ViewHolder里,就没有必要每次都通过findViewById()方法来获取控件实例了。 public class FruitAdapterImprove2 extends ArrayAdapter {
private int resourceId;
public FruitAdapterImprove2(Context context, int textViewResourceId) { super(context, textViewResourceId); resourceId = textViewResourceId; }