我有一个列表,它在用户输入搜索字符串时过滤数据。当用户单击搜索项时,它将打开新的活动。问题是它打开了错误的意图。当用户单击项目时,位置会随着筛选列表视图的变化而变化。它总是返回第一个项目的意图,因为匹配的搜索结果总是首先显示。我少了一小部分,请帮忙。
这是我的
自定义适配器
public class Searchitemadapter extends BaseAdapter implements Filterable {
private Home activity;
private FriendFilter friendFilter;
private ArrayList<B_allProducts> friendList;
private ArrayList<B_allProducts> filteredList;
public Searchitemadapter(Home activity, ArrayList<B_allProducts> friendList) {
this.activity = activity;
this.friendList = friendList;
this.filteredList = friendList;
getFilter();
}
@Override
public int getCount() {
return filteredList.size();
}
@Override
public Object getItem(int i) {
return filteredList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
final ViewHolder holder;
final B_allProducts user = (B_allProducts) getItem(position);
if (view == null) {
LayoutInflater layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = layoutInflater.inflate(R.layout.lv_container_searchitem, parent, false);
holder = new ViewHolder();
holder.name = (TextView) view.findViewById(R.id.lv_search_pname);
view.setTag(holder);
} else {
// get view holder back
holder = (ViewHolder) view.getTag();
}
holder.name.setText(user.getProductName());
return view;
}
@Override
public Filter getFilter() {
if (friendFilter == null) {
friendFilter = new FriendFilter();
}
return friendFilter;
}
static class ViewHolder {
TextView name;
}
private class FriendFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
if (constraint!=null && constraint.length()>0) {
ArrayList<B_allProducts> tempList = new ArrayList<B_allProducts>();
for (B_allProducts user : friendList) {
if (user.getProductName().toLowerCase().contains(constraint.toString().toLowerCase())
||user.getProductKeywordG().toLowerCase().contains(constraint.toString().toLowerCase())
||user.getProductKeyword().toLowerCase().contains(constraint.toString().toLowerCase()))
{
tempList.add(user);
}
}
filterResults.count = tempList.size();
filterResults.values = tempList;
} else {
filterResults.count = friendList.size();
filterResults.values = friendList;
}
return filterResults;
}
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
filteredList = (ArrayList<B_allProducts>) results.values;
notifyDataSetChanged();
}
}
}
这是我的
列表视图Onitemlicklistener
lvsearch.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String pos = aphashmap.get(position).get("ProductID");
Intent i = new Intent(SearchableActivity.this, DisplaySingleProduct.class);
i.putExtra("ProductID",pos);
startActivity(i);
}
});