簡體   English   中英

Android ListView:從其值獲取項目的位置?

[英]Android ListView: get item's position from its value?

我是Android和Java的新手。 我想知道是否有一種方法可以通過其值查找ListView項目的位置。

例如:
如果我的ListView中有一個顯示字符串“ Product 1108”的項目,如何獲得“ Product 1108”的位置?

private void updateListView() {
    final ListView lvCheckList = (ListView) findViewById(R.id.lvCheckList);
    Map<String, ?> keys = checkListData.getAll();

    ArrayList<String> checkListStrings = new ArrayList<String>();
    for (Map.Entry<String, ?> entry : keys.entrySet()) {
            if (entry.getKey().equals(currentList + entry.getValue())) {
                checkListStrings.add((String) entry.getValue());
            }
            if (entry.getKey().equals(currentList + entry.getValue() + "Checked")) {
                //set Item to checked / unchecked

            }
        }

        ArrayAdapter<String> checkListArrayAdapter = new ArrayAdapter<String>(
                this, android.R.layout.simple_list_item_checked,
                checkListStrings);
                lvCheckList.setAdapter(checkListArrayAdapter);  
                }

此代碼獲取存儲在SharedPreferences中的項目並將其顯示在ListView中。 不要問我為什么會起作用,它會起作用。

現在看到這一行:

if (entry.getKey().equals(currentList + entry.getValue() + "Checked")) {
                //set Item to checked / unchecked
    }

我要在這里發生的事情是將列表項設置為選中或未選中,但是我認為這是可能的,因為尚未填充listview。 因此,在ArrayAdapter中,我需要對listview的項目進行排序,找到具有我要查找的值的項目,然后獲取該項目的位置,以便可以使用以下代碼:

lvCheckList.setItemChecked(position, value);

希望這是有道理的。

如果您有BaseAdapter ,則應該有一個類似ArrayList存儲項,可以在其中使用indexOf(obj)方法。

如果使用的是ArrayAdapter ,則可以使用getPosition(obj);

這是循環遍歷ArrayAdapter的示例(讓我知道是否使用其他方法):

ArrayAdapter adapter = new YourCustomArrayAdapter();
for(int i = 0; i < adapter.getCount(); i++)
    System.out.println(String.format("String \"%s\" has an index of %d", adapter.getItem(i), i);

這不使用方法getPosition()因為我們的循環向我們提供了我們要獲得商品的位置。

你可以這樣做

Toast.makeText(getApplicationContext, "The position of the clicked item is " + position, Toast.LENGTH_SHORT).show();

在將要實現的listview onItemClickListener()

暫無
暫無

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

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