Android開發點點滴滴——ListView

初學android,感覺ListView組件用的廣泛,也挺難的。下面是自己碰的問題

1.基於數組的ListView
需要通過ArrayAdpter來提供表項

[java]
… 
array[i]=cursor.getString(1); 
… 
ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_2, array);  


array[i]=cursor.getString(1);

ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_2, array);
其中 第一個參數是context,第二為外觀樣式,第三為數組。

list.setAdapter(arrayAdapter)就可以瞭,這是一個很簡單listview

2.使用SimpleAdapter自定義列表項
這個感覺有點復雜瞭,主要是simpleadapter的建立參數有點多,
SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)

第一個參數 context,第二個為列表項的集合,第三個是界面外觀樣式的ID,第四個與第二有關,相當於第二個的Map中Key,第五個與第三個有關,表示哪些view組成列表項

那麼如果想修改的復雜一點,可以定制自己喜歡的layout放在第三參數的位置,相應的修改其他參數。

如果還想復雜,那麼重寫BaseAdapter吧。

3.添加單擊事件
public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3)

這個是百度來的一個說明,很具體形象:
X, Y兩個listview,X裡有1,2,3,4這4個item,Y裡有a,b,c,d這4個item。
如果你點瞭b這個item。如下:
public  void onItemClick (AdapterView<?> parent,    // parent相當於listview  Y適配器的一個指針,可以通過它來獲得Y裡裝著的一切東西,再通俗點就是說告訴你,你點的是Y,不是X – -、
 View view,     // view是你點b item的view的句柄,就是你可以用這個view,來獲得b裡的控件的id後操作控件
 int position,    // position是b在Y適配器裡的位置(生成listview時,適配器一個一個的做item,然後把他們按順序排好隊,在放到listview裡,意思就是這個b是第position號做好的)
 long id     // id是b在listview Y裡的第幾行的位置(很明顯是第2行),大部分時候position和id的值是一樣的,如果需要的話,你可以自己加個log把position和id都弄出來在logcat裡瞅瞅,看瞭之後心裡才踏實
)

那麼如何來獲取item 中的值呢

[java]
listView= (ListView) this.findViewById(R.id.listview); 
List<HashMap<String,String>>data = new ArrayList<HashMap<String,String>>(); 
UserService us = new UserService(this); 
List<User> users = us.getScrollDate(0, 10); 
for(User u : users){ 
    HashMap<String,String> map = new HashMap<String, String>(); 
    map.put("userid", String.valueOf(u.getUserid())); 
    map.put("name", u.getName()); 
    map.put("age", String.valueOf(u.getAge())); 
    data.add(map); 
        } 
SimpleAdapter adapter = new SimpleAdapter(this,data,R.layout.useritem,new String[]{"userid","name","age"},new int[]{R.id.userid,R.id.name,R.id.age}); 
         
listView.setAdapter(adapter); 
listView.setOnItemClickListener(new OnItemClickListener(){ 
 
    public void onItemClick(AdapterView<?> parent, View view, 
    int position, long id) { 
    ListView listView = (ListView)parent; 
    HashMap<String, String> map = (HashMap<String, String>) listView.getItemAtPosition(position); 
    String userid = map.get("userid"); 
    String name = map.get("name"); 
    String age = map.get("age"); 
    Toast.makeText(SQLiteCRUDActivity.this, userid +" , "+ name +" , "+ age ,Toast.LENGTH_LONG).show(); 
                } 
}); 

listView= (ListView) this.findViewById(R.id.listview);
List<HashMap<String,String>>data = new ArrayList<HashMap<String,String>>();
UserService us = new UserService(this);
List<User> users = us.getScrollDate(0, 10);
for(User u : users){
 HashMap<String,String> map = new HashMap<String, String>();
 map.put("userid", String.valueOf(u.getUserid()));
 map.put("name", u.getName());
 map.put("age", String.valueOf(u.getAge()));
 data.add(map);
        }
SimpleAdapter adapter = new SimpleAdapter(this,data,R.layout.useritem,new String[]{"userid","name","age"},new int[]{R.id.userid,R.id.name,R.id.age});
       
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener(){

 public void onItemClick(AdapterView<?> parent, View view,
 int position, long id) {
 ListView listView = (ListView)parent;
 HashMap<String, String> map = (HashMap<String, String>) listView.getItemAtPosition(position);
 String userid = map.get("userid");
 String name = map.get("name");
 String age = map.get("age");
 Toast.makeText(SQLiteCRUDActivity.this, userid +" , "+ name +" , "+ age ,Toast.LENGTH_LONG).show();
    }
});

 

You May Also Like