Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓在点击布局时从光标获取数据?_Android_Listview_Cursor - Fatal编程技术网

Android 安卓在点击布局时从光标获取数据?

Android 安卓在点击布局时从光标获取数据?,android,listview,cursor,Android,Listview,Cursor,我的列表行有一个布局,其中包含一些文本和一个应该模拟按钮的布局。我面临的问题是,我总是会在光标中获取最新的数据,这意味着如果我单击第一行上的布局,我应该会得到grp id 1和grp名称1,但是我得到grp id 3,grp名称3,而不管我在listview中单击哪个布局。怎么解决这个问题?我的代码: 在getView方法中 ViewHolder holder; if (convertView == null) { holder = new ViewHol

我的列表行有一个布局,其中包含一些文本和一个应该模拟按钮的布局。我面临的问题是,我总是会在光标中获取最新的数据,这意味着如果我单击第一行上的布局,我应该会得到grp id 1和grp名称1,但是我得到grp id 3,grp名称3,而不管我在listview中单击哪个布局。怎么解决这个问题?我的代码:

在getView方法中

ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            holder.text2 = (TextView) vi.findViewById(R.id.text2);
            holder.layout1 = (LinearLayout)vi.findViewById(R.id.info);
            vi.setTag(holder);
        } else {
            holder = (ViewHolder) vi.getTag();
        }

        String grpCount = c.getString(c
                .getColumnIndex(TestDbAdapter.KEY_GRP_COUNT));

        holder.text2.setText("Channels: " + grpCount);

        holder.layout1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                System.out.println(c.getString(c.getColumnIndex(TestDbAdapter.KEY_GRP_NAME)));
                System.out.println(c.getString(c.getColumnIndex(TestDbAdapter.KEY_GRP_ID)));
            }
        });

        return vi;

检查一下,我想应该这样修复:

 String grpCount = c.getString(c
                .getColumnIndex(TestDbAdapter.KEY_GRP_COUNT));
final String grpName = c.getString(c.getColumnIndex(TestDbAdapter.KEY_GRP_NAME));
final String grpId = c.getString(c.getColumnIndex(TestDbAdapter.KEY_GRP_ID));

        holder.text2.setText("Channels: " + grpCount);

        holder.layout1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                System.out.println(grpName);
                System.out.println(grpId);
            }
        });