SimpleCursorAdapter的点击事件的处理

首先我们知道在处理listview的点击事件的时候,因为我们有一个list用来存放所有的数据,然后用这个list去和adapt做匹配,那么我们在处理点击的事件的时候,如果我们想获取我们点击的这一行的值,我们只要根据id找到list中对应的数据即可,例如

 1         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
 2             @Override
 3             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 4                 Intent intent=new Intent();
 5                 if(id==0)
 6                 {
 7                     intent.setClass(Contacts_Activity.this,Add_Contact_Activity.class);
 8                     startActivity(intent);
 9                 }
10                 else if(id>=4)
11                 {
12                     intent.setClass(Contacts_Activity.this,Contact_details_Activity.class);
13                     intent.putExtra("name",list.get(position).getName());
14                     intent.putExtra("head",list.get(position).getId());
15                     intent.putExtra("number",list.get(position).getWechat_number());
16                     startActivity(intent);
17                 }
18             }
19         });
View Code

但是SimpleCursorAdapter不行,因为它的list是一个hashmap,这样的话如果我们想要获取点击行的数据是非常不好处理的,在这里提供一种解决方案

 1         final Cursor cursor=databaseManager.executeSql(sql,null);
 2         final SimpleCursorAdapter adapter=new SimpleCursorAdapter(this,R.layout.main_listview_item,cursor,
 3                 new String[]{"name","head","descs"},new int[]{R.id.me_listview_name,R.id.me_listview_head,R.id.me_listview_desc});
 4         listView.setAdapter(adapter);
 5         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
 6             @Override
 7             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 8                 Cursor c = (Cursor) listView.getItemAtPosition(position);
 9                 String name=c.getString(c.getColumnIndex("name"));
10                 int id1=c.getInt(c.getColumnIndex("head"));
11                 EventBus.getDefault().postSticky(new MessageEvent(name,id1));
12                 Intent intent=new Intent();
13                 intent.setClass(MainActivity.this,chat_Activity.class);
14                 startActivity(intent);
15             }
16         });
View Code

以上代码中有获取string和int两种类型的方法,其他的也是一样的

先获取listview的cursor,然后根据这个cursor,通过数据的名字获取值。

原文地址:https://www.cnblogs.com/zlhdbk/p/13155905.html