我有一个可以放入StringArray的类,它会显示带有搜索框的列表以过滤内容。我的应用程序倾向于每个字段都有一个集ID。但是,当我搜索值时,id会更改为已过滤的列表。有没有办法从原始列表中获取id,这样即使在过滤后的列表中,我也可以使用9,14而不是0,1,2 ......等等。
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();
答案 0 :(得分:1)
您可以自定义adapter
。创建新的Class
扩展BasaAdapter
并覆盖getItemId
方法:
@Override
public long getItemId(int position) {
return items[position].getID();
}
然后在onItemClick
中使用商品id
s。
答案 1 :(得分:0)
在您的自定义适配器中使用getItemId(pos)
你可以获得pos重写View.OnClickListener()
的onClick方法这里有一个例子
private View.OnClickListener mOnAddContactClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
final int position = mListView.getPositionForView(view);
Log.v(JBOOK,"original id "+getItemId(position));