Java 单击项目时,筛选器列表视图未获得正确的位置
当搜索列表视图数据时,过滤器列表工作正常,但当我单击过滤器列表数据时,无法获取数据在列表中的位置例如,如果我在列表中有A、B、C数据,我搜索B其工作正常,但当我单击B打开A活动而非B活动时,请提前帮助感谢这是我的代码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
@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))
应用程序崩溃现在在这行我没有测试我的代码,我的坏。错误说明了什么?我没有看到我删除了这行,如果你找到任何解决方案,请帮助我