Android開發點點滴滴——ListView

來源:互聯網
上載者:User

初學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();
    }
});

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.