【问题标题】:Load record id to listview android将记录ID加载到listview android
【发布时间】:2016-03-24 04:59:50
【问题描述】:

我是 android 新手,我遇到了无法解决的简单问题。我想要的是从数据库中加载带有 ID 的列表视图,这样当我点击它时,它将与数据库中的 id 匹配。这是我的代码:

public ArrayList<String> getAllContact() {
        ArrayList<String> array_list = new ArrayList<>();

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor res = db.rawQuery("SELECT * FROM contacts", null);
        res.moveToFirst();

        while (res.isAfterLast() == false){
            array_list.add(res.getString(res.getColumnIndex(CONTACT_COLUMN_NAME)));
            res.moveToNext();
        }
        return array_list;
    }

    mydb = new DBHelper(this);
    ArrayList array_list = mydb.getAllContact();
    ArrayAdapter arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, array_list);
    obj = (ListView) findViewById(R.id.listView1);
    obj.setAdapter(arrayAdapter);
    obj.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        int id_in_db = position + 1
        Bundle dataBundle = new Bundle();
        dataBundle.putInt("cid", id_in_db);

        Intent intent = new Intent(getApplicationContext(), DisplayContact.class);
        intent.putExtras(dataBundle);
        startActivity(intent);
       }
    });

我可以从 onclickitem 获得的是列表中项目的位置,该位置与我在数据库中的记录不匹配。我可以看到.setTag 方法可以是一个解决方案,但我不知道如何在可能的代码中应用它。有人可以帮我吗?

【问题讨论】:

  • position in onItemClick 是您的适配器中单击项目的位置。因此,您可以使用 arrayAdapter 获取与 db ID 关联的对象。
  • 是的,我同意你的观点,但是我怎样才能在我的 arrayAdapter 中设置 ID,所以当我将它分配给我的 Listview 时,我可以在 onItemClick 中调用一个参数
  • 有人可以帮忙吗?
  • 为什么不获取id的数组列表而不是CONTACT_COLUMN_NAME
  • 我需要它显示在用户界面中

标签: android listview arraylist


【解决方案1】:

因此您可以通过这种方式检索所选项目 ID:

int id_in_db = array_list.get(position).ID
Bundle dataBundle = new Bundle();
dataBundle.putInt("cid", id_in_db);

在您的 DisplayContact 活动中从数据库加载它,或者您可以传递整个项目而不仅仅是 ID,因此无需再次加载它

【讨论】:

  • 好的。那么我应该为我的数组列表设置什么以便我可以调用 ID 属性?
  • 为此,您应该像在 DB 中的表一样创建模型(类),而不是 ArrayAdapter 创建自定义适配器并将其与已创建的 ArrayList 一起使用
  • 如果我要创建自定义适配器,我应该重写哪个方法,以便我可以将它作为 onItemClick 上的参数?你能提供我的示例代码吗?
猜你喜欢
  • 2020-10-10
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-01
  • 2011-10-04
相关资源
最近更新 更多