前言:
ArrayAdapter:支持泛型操作,最簡單的一個Adapter,只能展現一行文字~,我的學習就是通過這個最簡單的適配器開始
正文:
完成這個ArrayAdapter需要三步:1.初始化數據,2.初始化Adapter,3.初始化AdapterView下面通過代碼來演示
xml文件
1 <ListView 2 android:layout_width="match_parent" 3 android:layout_height="match_parent" 4 android:id="@+id/listview"> 5 </ListView>
Java中文件
1 package com.example.administrator.testadapter; 2 3 import android.support.v7.app.AppCompatActivity; 4 import android.os.Bundle; 5 import android.widget.ArrayAdapter; 6 import android.widget.ListView; 7 8 import java.util.ArrayList; 9 import java.util.List; 10 11 public class MainActivity extends AppCompatActivity { 12 private ListView listview; 13 private List<String> list; 14 private ArrayAdapter<String>adapter; 15 @Override 16 protected void onCreate(Bundle savedInstanceState) { 17 super.onCreate(savedInstanceState); 18 setContentView(R.layout.activity_main); 19 //初始化適配器View 20 listview=(ListView)findViewById(R.id.listview); 21 //初始化數據源 22 list =new ArrayList<String>(); 23 for(int i=0;i<=20;i++){ 24 list.add("數據"+i); 25 } 26 //初始化適配器 27 adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list); 28 //把適配器設置到適配器View 29 listview.setAdapter(adapter); 30 } 31 }
效果圖:

補充:
數據源除了集合外還可以有數組,另外也可以寫到一個數組資源文件中:比如:在res\valuse下創建一個數組資源的xml文件:arrays.xml:
1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 <string-array name="myarray"> 4 <item>提莫</item> 5 <item>奧巴馬</item> 6 <item>蓋倫</item> 7 </string-array> 8 </resources>
27行代碼中,第二個參數(android.R.layout.simple_list_item_1)是系統提供的一個模板,統給我們提供好的一些ListView模板,有下面幾種:
simple_list_item_1 : 單獨一行的文本框 simple_list_item_2 : 兩個文本框組成 simple_list_item_checked : 每項都是由一個已選中的列表項 simple_list_item_multiple_choice : 都帶有一個復選框 simple_list_item_single_choice : 都帶有一個單選鈕
另外自己寫的布局文件也是可以,代碼如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <TextView xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:gravity="center" 6 android:text="顯示內容" 7 android:textSize="20sp" 8 android:padding="8dp" 9 />
這樣會讓單行文字居中顯示
下面給ListView添加監聽器
點擊事件
1 listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 2 @Override 3 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 4 Toast.makeText(MainActivity.this, "你點擊的item是第" + position + "個", Toast.LENGTH_SHORT).show(); 5 } 6 });
功能就是在你點擊ListView時會Toast一下
其中onItemClick方法中的參數:
parent:適配器設置到adapterView對象,這里表示ListView
view:適配器item對應的view
position:縮影位置
id:在ListView中的item的行id
長按點擊事件
1 listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 2 @Override 3 public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 4 list.remove(position); 5 adapter.notifyDataSetChanged(); 6 return true; 7 } 8 });
如果返回值為true的話這個點擊事件會被長點擊獨占,否則相反。
