![](/img/trans.png)
[英]Display list passed to listview and return id of selected item to previous activity
[英]ListView not returning selected item after filtering to previous activity
我有一個由String數組填充的ListView。 用戶搜索edittext並從列表中進行過濾,但是當我在過濾后單擊列表項之一時,不會返回所選項目,而是完全返回其他內容。 這就是為什么它出錯了:
過濾器代碼:
et.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence cs, int start, int before, int count) {
adapter.getFilter().filter(cs);
}
@Override
public void afterTextChanged(Editable s) {
}
列表項點擊代碼:
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String s = array[position];
intent.putExtra(s);
setResult(RESULT_OK, intent);
finish();
}
});
然后,我將通過OnActivityResult讀取字符串。 問題在於,當過濾列表時,列表項會減少。 選擇其中一項時,將返回精簡列表的位置編號,而不是數組。 這就是為什么返回的字符串實際上是根據數組而不是根據簡化列表的字符串。 我該如何克服呢?
當您過濾列表並單擊項目時,問題很簡單,您將無法單擊過濾的項目,因為在lv.setOnItemClickListener(new OnItemClickListener() {...}
您傳遞的是原始列表的position
而不是過濾列表的位置。
解決方法是從主列表中獲取而不是嘗試像這樣進行獲取:
String a = array[parent.getItemAtPosition(position)];
or
String a = array[adapter.getItem(position)];
or
String a = array[(String) parent.getAdapter().getItem(position)];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.