【Android】ListView控制元件的使用
阿新 • • 發佈:2019-01-02
ListView控制元件
- ListView控制元件以列表的形式展現具體資料內容
- 資料過多時會出現滾動條
- 根據資料長度自適應螢幕顯示
- ListView列表由多個Item組成,每個Item的佈局相同,用單獨一個XML定義
activity_main.xml(互動介面)
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView> </RelativeLayout>
list_item.xml(item條目佈局)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/item_image" android:layout_width="50dp" android:layout_height="50dp" /> <TextView android:id="@+id/item_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp"/> </LinearLayout>
資料介面卡
- 使用ListView控制元件需要進行資料適配才能顯示資料;
MainActivity.java
繼承BaseAdapter,自定義MyBaseAdapter類
... ListView mLisView; mListView=findViewById(R.id.lv); //建立一個Adapter的例項 MyBaseAdapter mAdapter=new MyBaseAdapter(); //設定Adapter mListView.setAdapter(mAdapter); ... class MyBaseAdapter extends BaseAdapter{ //得到item的總數 @Override public int getCount(){ //返回ListView Item條目總數 //nicknames是儲存有每個聯絡人暱稱的陣列 return nicknames.size(); } //得到item代表的物件 @Override public Object getItem(int position){ //返回ListView Item條目代表的物件 return nicknames.get(position); } //得到Item的id @Override public long getItemId(int position){ //返回ListView Item的id return position; } //得到Item的View檢視 @Override public View getView(int position,View convertView,ViewGroup parent){ //將list_item.xml檔案找出來並轉換成View物件 View view=View.inflate(MainActivity.this,R.layout.list_item,null); TextView textview=view.findViewById(R.id.item_tv); textview.setText(nicknames.get(position)); ImageView imageview=view.findViewById(R.id.item_image); //icons是儲存有每個聯絡人頭像的陣列 imageview.setBackgroundResource(icons.get(position)); return view; } }