灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:5436回复:0

Android开发点点滴滴——ListView

楼主#
更多 发布于:2013-05-12 12:58
初学android,感觉ListView组件用的广泛,也挺难的。下面是自己碰的问题
1.基于数组的ListView
需要通过ArrayAdpter来提供表项
[java]
...
array=cursor.getString(1);
...
ArrayAdapter<String>
arrayAdapter=new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_2, array);  
...
array=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();
    }
});

喜欢0 评分0
游客

返回顶部