最常用的组件之一ListView
1. 最简单的使用方法–只显示文本数据
在
Strings.xml
中添加一组String-array
列表
<string-array name="items"> //定义数据列表名为items
<item >第一条数据</item>
<item >我是第二条 </item>
<item >我叫黄干</item>
<item >ListView列表</item>
</string-array>
Layout页面插入一个
ListView
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/list_view"
android:entries="@array/items" /> //引用名为items的数据列表
效果图
2. 设置ListView的点击事件
给ListView设置
setOnItemClickListener
listView = (ListView)findViewById(R.id.listView1);
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
//上面的arg2参数比较常用,用来获取点击的是哪一个Item,0是第一个
Toast.makeText(getApplicationContext(), "点击了第"+arg2+"条", Toast.LENGTH_SHORT).show();
}
}
});
效果图
重点:ListView ,适配器 和java Bean 结
使用
ArrayAdapter
,共三个Class类Animals.java
,AnimalAdapter.java
,MainActivity.java
模型层
Animals.java
public class Animals { private String name; private int imageId; public Animals(String name, int imageId) { this.name = name; this.imageId = imageId; } public String getName() { return name; } public int getImageId() { return imageId; } }
适配器类
AnimalAdapter.java
public class AnimalAdapter extends ArrayAdapter<Animals> { private int resourceId; public AnimalAdapter(Context context, int resource,List<Animals> objects) { super(context, resource,objects); resourceId = resource; } //ArrayAdapter需要重写的方法 public View getView(int position,View convertView,ViewGroup parent){ //给模型层提供ListView的位置 Animals animals = getItem(position); //************ //☆☆ListView的优化 View view; if(convertView == null){ //设置视图接口 view = LayoutInflater.from(getContext()).inflate(resourceId, null); }else{ view = convertView;} ImageView animalImage = (ImageView) view.findViewById(R.id.animals_image); TextView animalName = (TextView) view.findViewById(R.id.aniamls_name); animalImage.setImageResource(animals.getImageId()); animalName.setText(animals.getName()); //************ //☆☆☆设置列表内的点击事件 animalImage.setOnClickListener(new OnClickListener() { public void onClick(View v) { Toast.makeText(getContext(), "阿里符合贷款来开发的", Toast.LENGTH_SHORT).show(); } }); return view; } }
MainActivity.java
public class MainActivity extends Activity { private List<Animals> animalList = new ArrayList<Animals>(); protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initAnimals(); AnimalAdapter adapter = new AnimalAdapter(MainActivity.this, R.layout.animals_item,animalList); ListView listview = (ListView)findViewById(R.id.list_view); listview.setAdapter(adapter); listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { //☆ 获取点击的位置,并从位置获取其数据 Animals animals = animalList.get(arg2); Toast.makeText(MainActivity.this, animals.getName(), Toast.LENGTH_SHORT).show(); } }); } //给数据层提供数据 private void initAnimals() { Animals Tiger = new Animals("Tiger", R.drawable.ddd); animalList.add(Tiger); Animals Lion = new Animals("Lion", R.drawable.fff); animalList.add(Lion); Animals Dog = new Animals("Dog", R.drawable.ggg); animalList.add(Dog); } }
示例:点击列表条
点击单条列表左侧的图片