簡體   English   中英

用searchview java過濾后獲取listview的原始位置

[英]Getting original position of listview after filtering with searchview java

我有一個用此數組填充的列表視圖

arrayList.add("Adam");
arrayList.add("Bob");
arrayList.add("Bob");
arrayList.add("Charlie");

然后,我有一個searchview根據用戶輸入的內容正確過濾適配器

String text = textField.getText().toString().toLowerCase(Locale.getDefault());
            adapter.getFilter().filter(text);

如果用戶鍵入“ B”,則列表視圖中僅顯示“ Bob”和“ Bob”項。 如果單擊頂部的項目,則項目位置為0。我需要獲取該項目的原始位置(在本例中為1)。 我知道我可以獲取該行的上下文,並在arrayList中搜索該項目的首次出現。 然后,我可以在未過濾的arraylist中獲得其位置。 (例)

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            int i = 0;

            String text = ((TextView) view).getText().toString();

            i = arrayList.indexOf(text);

            if(textLength == 0)
                Toast.makeText(getApplicationContext(), text + " and position is " + position, Toast.LENGTH_SHORT).show();
            else{
                Toast.makeText(getApplicationContext(), text + " and position is " + i, Toast.LENGTH_SHORT).show();
            }

        }
    });

如果未應用任何過濾,則無論我單擊哪一行都可以使用。 過濾后,我無法在數組列表中搜索所選行的第一個匹配項,因為可能有多個具有相同文本的項。 另外,如果單擊第二個“ Bob”(過濾后),它將只返回第一個“ Bob”的位置(即1)。 我了解問題,只是想不出解決方案。 是否有解決此問題的有效方法?

這只是為了讓我可以得到概念驗證的結果。 我的實際項目有多個數組列表。 因此,無論它們是原始數組列表中具有相同文本(鮑勃和鮑勃)的多個項目,還是其他數組列表都具有不同的值。 這就是為什么我需要原始位置而無需在數組列表中搜索文本的第一次出現的原因。 我將無法控制數組列表中的內容,因此必須考慮重復項。

請嘗試這個

public void onItemClick(AdapterView parent,View view,int position,long id){

parent.getItemAtPosition(position);

*您的代碼*

}

暫無
暫無

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

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