簡體   English   中英

Android Sqlite:如何從Listview獲取SQLite rowId?

[英]Android Sqlite: How to get the SQLite rowId from a Listview?

我通過標記填充ListView的SQLite數據庫表中的項目來創建用戶選擇的收藏夾列表。 然后,這些標記的項目將填充收藏夾ListView。 為了正確執行此操作,我需要從填充ListView的SQLite數據庫表中獲取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 + "\n\n" + 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的“ long id”部分,但這只是返回ListView中的位置。 我需要數據庫表中的實際rowId。

我在這里想念什么? 我感謝您的幫助。

你需要

  • 使用CursorAdapater(再長的ID將被標識提的是,ID列必須叫_id( BaseColumns._ID ),你可以有一個列別名ROWIDrowid AS _id )。

    • 例如,代替class ItemAdapter extends ArrayAdapter....使用class ItemAdapter extends CursorAdapter
  • 使用包含id的源(不是以ArrayList<String>提取但ArrayList<suitable_object_with_id>並通過getItem(position)訪問它,並使用適當的對象的方法來提取ID。

  • 建立一個免費的數組,以便該職位可以訪問id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM