Java ListView OnClick With Filter返回错误的活动

Java ListView OnClick With Filter返回错误的活动,java,android,Java,Android,过滤后我的listview有问题,onclick返回错误的活动,因为过滤前项目的原始位置,我将尽力使用 示例如下: ITEM 1 (pos 0) [opens Activity A] ITEM 2 (pos 1) [opens Activity B] ITEM 3 (pos 2) [opens Activity C] ITEM 4 (pos 3) [opens Activity D] 当我过滤只得到第3项和第4项时,我得到了这个 ITEM 3 [opens activity A and NOT

过滤后我的listview有问题,onclick返回错误的活动,因为过滤前项目的原始位置,我将尽力使用 示例如下:

ITEM 1 (pos 0) [opens Activity A]
ITEM 2 (pos 1) [opens Activity B]
ITEM 3 (pos 2) [opens Activity C]
ITEM 4 (pos 3) [opens Activity D]
当我过滤只得到第3项和第4项时,我得到了这个

ITEM 3 [opens activity A and NOT C] because after filtering it takes pos 0 and not 2 
ITEM 4 [opens activity B and NOT D] because after filtering it takes pos 1 and not 3
请帮助我输入以下代码:

public class ListViewAdapterProduct extends BaseAdapter {

Context mContext;
LayoutInflater inflater;
private List<ClassProductList> classProductlist = null;
private ArrayList<ClassProductList> arraylist;

public ListViewAdapterProduct(Context context, List<ClassProductList> classProductlist) {
    mContext = context;
    this.classProductlist = classProductlist;
    inflater = LayoutInflater.from(mContext);
    this.arraylist = new ArrayList<ClassProductList>();
    this.arraylist.addAll(classProductlist);
}

public class ViewHolder {        
    TextView title;
    TextView description;
    ImageView photo;
}

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

@Override
public ClassProductList getItem(int position) {
    return classProductlist.get(position);
}

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

public View getView(final int position, View view, ViewGroup parent) {
    final ViewHolder holder;
    if (view == null) {
        holder = new ViewHolder();
        view = inflater.inflate(R.layout.list_view_single_row, null);

        holder.title = (TextView) view.findViewById(R.id.textLarge);
        holder.description = (TextView) view.findViewById(R.id.textSmall);
        holder.photo= (ImageView) view.findViewById(R.id.imageThumb);
        view.setTag(holder);
    } else {
        holder = (ViewHolder) view.getTag();
    }

    holder.title.setText(classProductlist.get(position).getTitle());
    holder.description.setText(classProductlist.get(position).getDescription());
    holder.photo.setImageResource(classProductlist.get(position).getImage());


    view.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

            if(position == 0) {
                Intent intent0 = new Intent(mContext, ProductProductprod1.class);
                mContext.startActivity(intent0);
            }

            if(position == 1) {
                Intent intent1 = new Intent(mContext, ProductProductprod2.class);
                mContext.startActivity(intent1);
            }
        }        
    });

    return view;
}

// Filter Class
public void filter(String charText) {
    charText = charText.toLowerCase(Locale.getDefault());
    classProductlist.clear();
    if (charText.length() == 0) {
        classProductlist.addAll(arraylist);
    }
    else
    {
        for (ClassProductList Product : arraylist)
        {
            if (Product.getTitle().toLowerCase(Locale.getDefault()).contains(charText))
            {
                classProductlist.add(Product);
            }
        }
    }

    notifyDataSetChanged();
}
公共类ListViewAdapterProduct扩展了BaseAdapter{
语境;
充气机;
私有列表classProductlist=null;
私有ArrayList ArrayList;
公共ListViewAdapterProduct(上下文上下文,列表类ProductList){
mContext=上下文;
this.classProductlist=classProductlist;
充气器=从(mContext)开始的充气器;
this.arraylist=新的arraylist();
this.arraylist.addAll(classProductlist);
}
公共类视图持有者{
文本视图标题;
文本视图描述;
ImageView照片;
}
@凌驾
public int getCount(){
返回classProductlist.size();
}
@凌驾
公共类ProductList getItem(int位置){
返回classProductlist.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
公共视图getView(最终整数位置、视图视图、视图组父视图){
最终持票人;
如果(视图==null){
holder=新的ViewHolder();
视图=充气机。充气(R.layout.list\u view\u single\u row,null);
holder.title=(TextView)view.findViewById(R.id.textLarge);
holder.description=(TextView)view.findViewById(R.id.textSmall);
holder.photo=(ImageView)view.findViewById(R.id.imageThumb);
视图.设置标签(支架);
}否则{
holder=(ViewHolder)view.getTag();
}
holder.title.setText(classProductlist.get(position.getTitle());
holder.description.setText(classProductlist.get(position.getDescription());
holder.photo.setImageResource(classProductlist.get(position.getImage());
view.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
如果(位置==0){
Intent intent0=新的Intent(mContext,product1.class);
mContext.startActivity(intent0);
}
如果(位置==1){
Intent intent1=新的Intent(mContext,product2.class);
mContext.startActivity(intent1);
}
}        
});
返回视图;
}
//过滤类
公共空过滤器(字符串图表文本){
charText=charText.toLowerCase(Locale.getDefault());
classProductlist.clear();
如果(ChartText.length()==0){
classProductlist.addAll(arraylist);
}
其他的
{
对于(ClassProductList产品:arraylist)
{
if(Product.getTitle().toLowerCase(Locale.getDefault()).contains(ChartText))
{
classProductlist.add(产品);
}
}
}
notifyDataSetChanged();
}

}

为什么不将要打开的
活动与
产品关联起来?然后在你的
getView
方法中,你可以按照下面的思路做一些事情

final Class activityClass = classProductlist.get(position).getActivityClass()
view.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
                Intent intent = new Intent(mContext, activityClass);
                mContext.startActivity(intent);
        }        
    });

您好,我想从单击的listview项中获取特定的活动:ProductProd1、ProductProd2、ProductProdN……等等,这就是我使用“if”语句的原因