最常用的組件之一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); } }
示例:點擊列表條
點擊單條列表左側的圖片