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,通过数据的名字获取值。

  • 相关阅读:
    使用本地系统帐户和域用户帐户两者区别(microsoft SQLServer2000)(ZT)
    Winform中消息循环、异步操作、Control.Invoke&Control.BeginInvoke学习
    SQL字符串的分组聚合(ZT)
    一次项目维护案例而对事务学习的笔记
    NOIP2011提高组 选择客栈
    NOIP2012提高组 Day 2 Problem 2 借教室
    201793模拟赛T2 取数(win)
    201793模拟赛T1 卡片(card)
    01Dart 变量常量
    01TypeScript 基础类型
  • 原文地址:https://www.cnblogs.com/zlhdbk/p/13155905.html
Copyright © 2011-2022 走看看