Java 单击项目时,筛选器列表视图未获得正确的位置

Java 单击项目时,筛选器列表视图未获得正确的位置,java,android,android-layout,listview,Java,Android,Android Layout,Listview,当搜索列表视图数据时,过滤器列表工作正常,但当我单击过滤器列表数据时,无法获取数据在列表中的位置例如,如果我在列表中有A、B、C数据,我搜索B其工作正常,但当我单击B打开A活动而非B活动时,请提前帮助感谢这是我的代码 @Override public int getCount() { return models.size(); } @Override public Object getItem(int position) { return models.get(positio

当搜索列表视图数据时,过滤器列表工作正常,但当我单击过滤器列表数据时,无法获取数据在列表中的位置例如,如果我在列表中有A、B、C数据,我搜索B其工作正常,但当我单击B打开A活动而非B活动时,请提前帮助感谢这是我的代码

 @Override
public int getCount() {
    return models.size();
}

@Override
public Object getItem(int position) {
    return models.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    if (convertView == null) {
        convertView = View.inflate(context, R.layout.listitem, null);
    }

    ImageView images = (ImageView) convertView.findViewById(R.id.imageView);
    TextView title = (TextView) convertView.findViewById(R.id.name);
    TextView about = (TextView) convertView.findViewById(R.id.desc);
    RatingBar ratingBar= (RatingBar) convertView.findViewById(R.id.rating);

    Restaurantmodel model = models.get(position);
    images.setImageResource(model.getImage());
    title.setText(model.getTitle());
    about.setText(model.getAbout());
    ratingBar.setRating(ratings[position]);
    return convertView;
}


@Override
public Filter getFilter() {
    if(filter == null)
    {
        filter=new CustomFilter();
    }
    return filter;
}

class CustomFilter extends Filter {

    @Override
    protected FilterResults performFiltering(CharSequence constraint) {
        FilterResults results = new FilterResults();

        if (constraint != null && constraint.length() > 0) {
            constraint = constraint.toString().toUpperCase();
            ArrayList<Restaurantmodel> filters = new ArrayList<Restaurantmodel>();
            for (int i = 0; i < filterList.size(); i++) {
                if (filterList.get(i).getTitle().toUpperCase().contains(constraint.toString().toUpperCase())) {
                    Restaurantmodel R = new Restaurantmodel(filterList.get(i).getImage(), filterList.get(i).getTitle(), filterList.get(i).getAbout() );
                    filters.add(R);
                }
            }
            results.values=filters;
            results.count=filters.size();

        }
        else
        {
            results.values=filterList;
            results.count=filterList.size();

        }
        return results;
    }

    @Override
    protected void publishResults (CharSequence constraint, FilterResults results){
        models=(ArrayList<Restaurantmodel>) results.values;
        notifyDataSetChanged();
    }
}


listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if (position == 0) {
                Intent myintent = new Intent(Restaurant.this, NOSHAKH.class);
                myintent.putExtra("position",restaurantadapter.getItemId(position));
                startActivity(myintent);
            }
            if (position == 1) {
                Intent intent = new Intent(Restaurant.this, Barbqtonite.class);
                intent.putExtra("position", restaurantadapter.getItemId(position));
                startActivity(intent);
            }
        }
    });
  svR = (SearchView) findViewById(R.id.searchViewxray);
    svR.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextChange(String query) {
                restaurantadapter.getFilter().filter(query);
            return false;
        }
             @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

    });
@覆盖
public int getCount(){
返回models.size();
}
@凌驾
公共对象getItem(int位置){
返回模型。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
convertView=View.inflate(上下文,R.layout.listitem,null);
}
ImageView images=(ImageView)convertView.findViewById(R.id.ImageView);
TextView title=(TextView)convertView.findViewById(R.id.name);
TextView about=(TextView)convertView.findViewById(R.id.desc);
RatingBar RatingBar=(RatingBar)convertView.findViewById(R.id.rating);
Restaurantmodel=models.get(位置);
setImageResource(model.getImage());
title.setText(model.getTitle());
about.setText(model.getAbout());
额定杆。设定额定值(额定值[位置]);
返回视图;
}
@凌驾
公共过滤器getFilter(){
if(filter==null)
{
filter=新的CustomFilter();
}
回流过滤器;
}
类CustomFilter扩展了过滤器{
@凌驾
受保护的筛选器结果性能筛选(CharSequence约束){
FilterResults results=新的FilterResults();
if(constraint!=null&&constraint.length()>0){
constraint=constraint.toString().toUpperCase();
ArrayList过滤器=新的ArrayList();
对于(int i=0;i
“onItemClick”返回筛选列表中元素的位置,但您可以使用此位置从原始列表中获取项目。试着这样做:

myintent.putExtra(“position”,initialList.indexOf(restaurantadapter.getItem(position))


应用程序崩溃现在在这行我没有测试我的代码,我的坏。错误说明了什么?我没有看到我删除了这行,如果你找到任何解决方案,请帮助我