机器人:列表视图:获得项目点击光标值 [英] android : listview: get cursor value on item click

查看:143
本文介绍了机器人:列表视图:获得项目点击光标值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个数据库和表(类别)列(_id,标题,...)
我想读从DB和显示分类列表类别,列表视图。

I create a database and table (categories) with columns (_id, title, ...) I want to read categories from db and show category list as a listview.

在这里为y code:

here is y code:

   public class MainActivity extends listActivity{

    private ArrayAdapter arrayAdapter;
    ArrayList results = new ArrayList();
    ListView catlist;
    Cursor cur;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        catlist = getListView();

        int parentid = getIntent().getIntExtra("catid", 0);
        openAndQueryDatabase(parentid);

        displayCatListView();




    }

    private void displayCatListView() {

        setListAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, results));


        catlist.setOnItemClickListener(new OnItemClickListener() {

               @Override
               public void onItemClick(AdapterView<?> parent, View v,
                 final int position, long id) {


                Toast.makeText(MainActivity.this,
                  "List View Clicked:" + position, Toast.LENGTH_LONG)
                  .show();
               }
              });     

    }

    private void openAndQueryDatabase(int parentid) {
        DataBaseHelper db = new DataBaseHelper(this);

        SQLiteDatabase dbr = db.getReadableDatabase();
        cur = dbr.rawQuery(
                "SELECT _id, title, has_sub FROM categories where parent_id=?",
                new String[] { String.valueOf(parentid) });


        if (cur != null) {
            while (cur.moveToNext()) {

                int cat_id = cur.getInt(cur.getColumnIndex("_id"));
                String cattitle = cur.getString(cur.getColumnIndex("title"));
                int has_sub = cur.getInt(cur.getColumnIndex("has_sub"));
                results.add(cat_id + cattitle + has_sub);
            }
            cur.close();
        }

        db.close();

    }
}

1),我可以得到位置onItemClick。但我希望得到的类别_id onItemClick。请大家帮忙

1) I can get position onItemClick. but I want to get category _id onItemClick. please help

2)我是新的。有没有在我的codeS什么错误?

2) I'm new. is there any mistakes in my codes ?

非常感谢

推荐答案

而不是

int cat_id = cur.getInt(cur.getColumnIndex("_id"));
String cattitle = cur.getString(cur.getColumnIndex("title"));
int has_sub = cur.getInt(cur.getColumnIndex("has_sub"));
results.add(cat_id + cattitle + has_sub);

创建一个类别类来包含这些值,使用参数化的ArrayList。类似

create a Category class to contain these values, and use a parameterized ArrayList. Something like

class Category {
    public int cat_id;
    public String cattitle;
    public int has_sub;

    public Category(int cat_id, ...) {
        // constructor logic here
    }
}

results.add(new Category(cat_id, cattitle, has_sub));

有了这个,你可以设置onItemClickListener这样:

With this, you can set the onItemClickListener as such:

        catlist.setOnItemClickListener(new OnItemClickListener() {

           @Override
           public void onItemClick(AdapterView<?> parent, View v,
             final int position, long id) {
                 Category clickedCategory = results.get(position);
                 int id = clickedCategory.cat_id;

                 // do something with id
           }
          });     

您ArrayList是你ArrayAdapter的数据源,位置对应点击类别的指数吧。

Your ArrayList is the data source of your ArrayAdapter, and position corresponds to the index of the clicked Category in it.

这篇关于机器人:列表视图:获得项目点击光标值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆