zoukankan      html  css  js  c++  java
  • 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,通过数据的名字获取值。

  • 相关阅读:
    狄利克雷卷积
    洛谷P2044 [NOI2012]随机数生成器
    Miller Rabin算法详解
    BZOJ3667: Rabin-Miller算法
    洛谷P3383 【模板】线性筛素数(Miller_Rabin)
    洛谷P3806 【模板】点分治1
    BZOJ1468: Tree
    Android Camera调用过程分析
    安卓开发37:自定义的HorizontalScrollView类,使其pageScroll的时候焦点不选中
    Android抖动动画
  • 原文地址:https://www.cnblogs.com/zlhdbk/p/13155905.html
Copyright © 2011-2022 走看看