Android攻城狮ListView
生活随笔
收集整理的這篇文章主要介紹了
Android攻城狮ListView
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
適配器:
數據適配器:把復雜的數據填充在指定的視圖界面上ArrayAdapter 數組適配器 用于綁定格式單一的數據 數據源:可以是集合或數組 SimpleAdapter 簡單適配器:用于綁定格式復雜的數據 數據源:只能是特定泛型的集合數據適配器是連接數據源和視圖界面的橋梁使用過程:新建適配器->添加數據源到適配器->視圖加載適配器ListView中 “ArrayAdapter”的使用方法1.新建listview和 ArrayAdapter 2.設置數據源,使用String[]即可,(也可以使用其他的,只要有對應的構造函數就行) 3.實例化ArrayAdapter,具有很多構造函數。(一般第一個Context為上下文,resouce為數據源,即布局界面。最后一個數據源) 4.為listView設置Adapter. listView.setAdapter(arrAdapter); 1 public class MainActivity extends AppCompatActivity { 2 private ListView listView; 3 private ArrayAdapter<String>arr_adapter;//適配器 4 @Override 5 protected void onCreate(Bundle savedInstanceState) { 6 super.onCreate(savedInstanceState); 7 setContentView(R.layout.activity_main); 8 listView=(ListView)findViewById(R.id.listView); 9 //一,新建一個適配器 10 //三個參數 11 //1,上下文 12 //2,當前listview加載的每一個列表項所對應的布局文件 13 //3,數據源 14 // 二,適配器加載數據源 15 String[] arr_data={"mukewang1","mukewang1","mukewang1","mukewang1"}; 16 arr_adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arr_data); 17 //三,視圖(ListView)加載適配器 18 listView.setAdapter(arr_adapter); 19 } 20 } SimpleAdapter( context, data , resource , from ,to ): context:上下文 data:數據源(List<? extends Map<String,?>> data)一個由Map組成的List合集每一個Map都對應ListView列表中的一行每一個Map(鍵-值對)中的鍵都必須包含所有在from中所指定的鍵 resource:列表項的布局文件ID from:Map中的鍵名 to:綁定數據視圖中的ID,與from成對應關系。例如:sim_adapter=new SimpleAdapter(this,getData(),R.layout.item , new String[]{"pic","text"} ,new int[]{R.id.pic,R.id.text}); 這里的數據源比較麻煩,先自定義一個獲取數據源的方法getdata(),然后在這里調用它。 另外,R.layout.item也是自建的,包含一個ImageButton(編號R.id.pic)和一個 Button(編號R.id.text),這些編號也是數據視圖中的ID
監聽器 MainActivity實現接口OnItemClickListener,OnScrollListener。 然后給ListView加載這些監聽器: listView.setOnItemClickListener(this); 單個條目的監聽器 listView.OnScrollListener(this); ListView視圖滾動監聽器 最后,重寫OnItemClick(): @Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {//position就是點擊的位置String text = listView.getItemAtPosition(position)+"";//獲取被點擊的列表項的信息Toast.makeText(this, "點擊的位置:"+text+" position="+position, Toast.LENGTH_SHORT).show();} 運行效果:點擊任意一個列表項,就會跳出該列表項的信息提示
1. 實現接口OnScrollListener (android.widget.AbsListView.OnScrollListener) 這個包下的 2. 其中包括兩個方法public void onScrollStateChanged(AbsListView view, int scrollState)scrollState代表當前滾動的狀態public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) 3. 滾動有三種狀態SCROLL_STATE_TOUCH_SCROLL 當手指接觸屏幕時,為該狀態SCROLL_STATE_FLING 手指離開屏幕,但是滑動為停止SCROLL_STATE_IDLE 滑動停止 1 public void onScrollStateChanged(AbsListView view, int scrollState) { 2 // TODO Auto-generated method stub 3 switch (scrollState) { 4 case SCROLL_STATE_FLING: 5 Log.i("------》》 SCROLL_STATE_FLING", "用戶在手指離開屏幕之前,由于用力劃了一下,視圖仍然靠慣性繼續滑動"); 6 Map<String, Object> map = new HashMap<String, Object>(); 7 map.put("pic", R.drawable.ic_launcher); 8 map.put("text", "增加項"); 9 datalist.add(map); 10 simpleadapter.notifyDataSetChanged(); 11 break; 12 13 case SCROLL_STATE_IDLE: 14 Log.i("---->>SCROLL_STATE_IDLE", "視圖已經停止滑動"); 15 break; 16 17 case SCROLL_STATE_TOUCH_SCROLL: 18 Log.i("------》》SCROLL_STATE_TOUCH_SCROLL", "手指沒有離開屏幕,視圖正在滑動"); 19 break; 20 } 21 }
?完整代碼:
1 //兩種適配器ArrayAdapter和SimpleAdapter 2 3 //兩種監聽方式 4 //listView.setOnItemClickListener(this); 單個條目的監聽器 5 //listView.OnScrollListener(this); ListView視圖滾動監聽器 6 7 //類似下拉刷新的小案例 8 public class MainActivity extends Activity implements OnItemClickListener, 9 OnScrollListener { 10 private ListView listView; 11 private ArrayAdapter<String> arr_adapter; 12 13 private SimpleAdapter simp_adapter; 14 List<Map<String, Object>> dataList; 15 16 @Override 17 protected void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.fragment_main); 20 listView = (ListView) findViewById(R.id.listView1); 21 // 1.新建一個適配器 22 String[] arr_data = { "小白菜1", "小白菜2", "小白菜3" }; 23 arr_adapter = new ArrayAdapter<String>(this, 24 android.R.layout.simple_list_item_1, arr_data); 25 // 2.適配器加載數據源 26 // 3.加載適配器 27 // listView.setAdapter(arr_adapter); 28 // -------------------SimpleAdapter------------------------ 29 // data:數據源List<? extends Map<String, ?>> data 一個Map所組成的List集合 30 // 每一個Map都會去對應Listview列表中的一行 31 // 每個Map(鍵值對)中的鍵必須包含所有在from中所指定的鍵 32 // resource:列表項的布局文件 33 // from: map中的鍵名 34 // to:綁定數據視圖中的id 與from對應(布局中的控件) 35 36 dataList = new ArrayList<Map<String, Object>>(); 37 simp_adapter = new SimpleAdapter(this, getData(), R.layout.item, 38 new String[] { "pic", "text" }, 39 new int[] { R.id.pic, R.id.text }); 40 listView.setAdapter(simp_adapter); 41 listView.setOnItemClickListener(this); 42 listView.setOnScrollListener(this); 43 } 44 45 public List<Map<String, Object>> getData() { 46 for (int i = 0; i < 20; i++) { 47 Map<String, Object> map = new HashMap<String, Object>(); 48 map.put("pic", R.drawable.ic_launcher); 49 map.put("text", "小菠菜" + i); 50 dataList.add(map); 51 } 52 53 return dataList; 54 55 } 56 57 @Override 58 public void onScrollStateChanged(AbsListView view, int scrollState) { 59 // TODO Auto-generated method stub 60 switch (scrollState) { 61 case SCROLL_STATE_FLING: 62 // 類似下拉刷新的小案例 63 Log.i("---->>", "用戶在手指離開屏幕之前,由于用力滑了一下,視圖仍依靠慣性滑動"); 64 Map<String, Object> map = new HashMap<String, Object>(); 65 map.put("pic", R.drawable.ic_launcher); 66 map.put("text", "我是多余的增加項"); 67 dataList.add(map); 68 simp_adapter.notifyDataSetChanged();// 通知線程更新UI 69 break; 70 case SCROLL_STATE_IDLE: 71 Log.i("---->>", "視圖已經停止滑動"); 72 break; 73 case SCROLL_STATE_TOUCH_SCROLL: 74 Log.i("---->>", "視圖正在滑動,手指沒有移開屏幕"); 75 break; 76 } 77 } 78 79 @Override 80 public void onScroll(AbsListView view, int firstVisibleItem, 81 int visibleItemCount, int totalItemCount) { 82 // TODO Auto-generated method stub 83 84 } 85 86 @Override 87 public void onItemClick(AdapterView<?> parent, View view, int position, 88 long id) { 89 // TODO Auto-generated method stub 90 String text = listView.getItemAtPosition(position) + ""; 91 Toast.makeText(MainActivity.this, 92 "position=" + position + "text=" + text, 0).show(); 93 } 94 95 }?
?
轉載于:https://www.cnblogs.com/my334420/p/6696663.html
總結
以上是生活随笔為你收集整理的Android攻城狮ListView的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PCL中分割_欧式分割(1)
- 下一篇: 静态块