zoukankan      html  css  js  c++  java
  • ListView 获取选中和长按菜单对应的 item 的 _id 值

    首先,如果是用 SimpleCursorAdapter 填充 ListView 的数据时,必须注意 sqlite 的主键命名,由于 SimpleCursorAdapter 的方法只识别 _id,所以,当你用到sqlite的SimpleCursorAdapter 时,必须把数据表的主键命名为 _id。否则就会出现 java.lang.IllegalArgumentException: column '_id' does not exist错误。

    (1)言归正传,当我们点击 ListView 时,会调用 ListView 的点击事件,那么点击的这个 item 的对应的数据库的 _id 的值,我们可以通过以下代码获取:

    public class RoadPickList extends Activity{
    private static final String TAG = "RoadPickList";
    private ListView lv;
    private int id;
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.roadpicklist);
    lv = (ListView)findViewById(R.id.listview);
    /**
    * 添加点击
    */
    lv.setOnItemClickListener(new ListView.OnItemClickListener() {

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    long arg3) {
    // TODO Auto-generated method stub
    id = (int) arg3;//这里的这个arg3对应的就是数据库中_id的值
    }

    });
    }

    (2)另外,我们可能还会用到长按菜单(上下文菜单),当我们在ListView上长按时,想获得长按的这个ListViewitem_id的值,参考下面这段代码:

    /**
    * 长按菜单的响应
    */
    public boolean onContextItemSelected(MenuItem aItem) {
    ContextMenuInfo menuInfo = (ContextMenuInfo) aItem.getMenuInfo();
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)aItem.getMenuInfo();
    id = (int)info.id;//这里的info.id对应的就是数据库中_id的值
    return true;
    }




  • 相关阅读:
    QDUOJ LC的课后辅导 单调递增栈
    蓝桥杯 时间问题
    区间sum 和为k的连续区间-前缀和
    康托展开-全排列的编码与解码
    康托展开-全排列应用
    背包之01背包、完全背包、多重背包详解
    HDU
    辗转相除求最大公约数与最小公倍数
    快速幂(反复平方法)
    HDU
  • 原文地址:https://www.cnblogs.com/xpxpxp2046/p/2291950.html
Copyright © 2011-2022 走看看