0
我有一個由String數組填充的ListView。用戶搜索edittext並從列表中過濾,但是當我在過濾後單擊其中一個列表項目時,所選項目不會被返回,而是完全返回。這就是爲什麼有人會錯:ListView在篩選到之前的活動後沒有返回選定的項目
過濾代碼:
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的字符串。問題是當列表被過濾時,列表項目被減少。在選擇其中一個項目時,返回縮小列表的位置編號,而不是數組。這就是爲什麼返回的字符串實際上是根據數組而不是根據簡化列表的字符串。我該如何克服這一點?
能的你,而不是保持字符串數組,保持一個HashMap與代表ID INT?然後基於用戶單擊,查看哪個項目具有給定的id並在原始HashMap中找到它。 –
Vucko