Android Sqlite:如何从listView获取SQLite ROWID



我是通过在填充列表视图的SQLite数据库表中标记项目来创建一个用户选择的收藏夹列表。然后,这些标记的项目将填充收藏夹ListView。为了正确执行此操作,我需要在SQLite数据库表中获取listView填充的rowID,以便我可以添加标志。我如何获得rowid?

这是我当前的代码:

OnItemClickListener:

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int 
position, long id) {
            String selected = (String) 
mListView.getItemAtPosition(position);
            mItemTextView = findViewById(R.id.itemWords);
            mItemNumberTextView = findViewById(R.id.itemNumber);
            mId = id;
            mBookCopied = 
mItemHeaderNameTextView.getText().toString();
            mItemCategoryNumberCopied = Integer.toString(mCategorySelected + 1);
            mItemNumberCopied = 
mItemNumberTextView.getText().toString();
            mPosition = position + 1;
            mCopiedItemListItem = mItemCopied + " " + 
mCategoryNumberCopied + ":" + mPosition + "nn" + selected;
            showMenu(view);
        }
    });

itemadapter:

class ItemAdapter extends ArrayAdapter<String> {
    public ItemAdapter(Context context, int resource1, List<String> items) {
        super(context, resource1, items);
        mContext = context;
        mResource1 = resource1;
        mItems= items;
    }
    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        View listItem = convertView;
        int pos = position + 1;
        if (listItem == null) {
            listItem = LayoutInflater.from(mContext).inflate(mResource1, parent, false);
        }
        mItemNumberTextView = (TextView) listItem.findViewById(R.id.itemNumber);
        mItemumberTextView.setText(String.valueOf(pos) + " ");
        mItemTextView = (TextView) listItem.findViewById(R.id.itemWords);
        mItemTextView.setText(mItems.get(position));
        }
        return listItem;
    }
}

我尝试使用OnItemClickListener的"长ID"部分,但这只是返回ListView中的位置。我需要从数据库表中的实际rowID。

我在这里想念什么?感谢您的帮助。

您需要

  • 使用cursoradapater(然后长ID 将是 ID ,请注意必须称为ID列 _id (BaseColumns._ID((,您可以拥有一个列的列,该列 ROWID 例如rowid AS _id(。

    • 例如。而不是class ItemAdapter extends ArrayAdapter....使用class ItemAdapter extends CursorAdapter
  • 使用包含ID而非数据的源,而不是提取为ArrayList<String>而是ArrayList<suitable_object_with_id>,并通过getItem(位置(访问它,并使用适当的对象的方法提取ID。

  • 构建一个免费数组,以便该位置可以访问 ID

相关内容

  • 没有找到相关文章