編輯:關於Android編程
初學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();
}
});
幾個常用的方法:1.setTitle()設置對話框顯示的標題。2.setIcon()設置對話框的圖標,值得注意的是,如果沒有使用setTitle()方法,setIcon(
本文實例演示如何從圖庫(Gallery)中讀取圖像並用ImageView將它顯示出來,供大家參考,具體內容如下運行本示例前,需要先利用相機模擬拍攝一些圖片到圖庫中。1、運
1.windows共享文件夾裡 下載、解壓三星官方uboot源碼 2.復制到linux下的目錄 3.在共享文件夾裡面建立SourceInsight 工
微信怎麼鑒別二手機?現在還有不用微信的童鞋嗎?不過估計即使是最早的一批微信玩家,到現在也無法摸透它的所有隱藏功能。比如,用微信查崗和鑒別二手機,下面小編就給