我有一个类,我可以在其中放入一个 StringArray,它会显示带有用于过滤内容的搜索框的列表。我的应用程序很容易每个字段都有一个集合 ID。但是,当我搜索一个值时,id 会更改为过滤后的列表。有没有办法从原始列表中获取 id,这样即使在过滤后的列表中,我也可以使用 9、14 而不是 0、1、2.... 之类的 id。
lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , searchItems));
ed.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
textlength = ed.getText().length();
arr_sort.clear();
for (int i = 0; i < searchItems.length; i++) {
if (textlength <= searchItems[i].length()) {
if (ed.getText().toString().equalsIgnoreCase((String) searchItems[i].subSequence(0, textlength))) {
arr_sort.add(searchItems[i]);
}
}
}
lv1.setAdapter(new ArrayAdapter<String>(Rest_Search.this, android.R.layout.simple_list_item_1, arr_sort));
// lv1.smoothScrollToPosition(20);
}
});
lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View v,
int position, long id) {
// String a = parent.getItemAtPosition(position);
// menuID = (int) id;
int a = (int) parent.getAdapter().getItemId(position);
// menuID = (int) parent.getAdapter().getItemId(position);
Toast.makeText(Rest_Search.this, ""+a, Toast.LENGTH_SHORT).show();
最佳答案
您可以自定义您的适配器
。创建一个新的 Class
extends BasaAdapter
并覆盖 getItemId
方法:
@Override
public long getItemId(int position) {
return items[position].getID();
}
然后在 onItemClick
中使用项目 id
。
关于android - 从过滤后的 ListView 中获取原始 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32691208/