自定义适配器';在android中执行clickEvent时,s textView值发生更改

自定义适配器';在android中执行clickEvent时,s textView值发生更改,android,listview,textview,custom-adapter,Android,Listview,Textview,Custom Adapter,我制作了一个自定义ListAdapter,我在该适配器中绑定了一些textView,我想执行适配器textView的click事件,并将一些值传递给另一个活动,我尝试了如下操作,但当加载ListView时,我得到的值与当前textView的值不同,因此,我只需要单击的textView的值。但现在我想获得屏幕上显示的大部分ListView,请帮助我,y代码如下: adapter.java public class OrderAdapter extends BaseAdapter { pub

我制作了一个自定义ListAdapter,我在该适配器中绑定了一些textView,我想执行适配器textView的click事件,并将一些值传递给另一个活动,我尝试了如下操作,但当加载ListView时,我得到的值与当前textView的值不同,因此,我只需要单击的textView的值。但现在我想获得屏幕上显示的大部分ListView,请帮助我,y代码如下:

adapter.java

public class OrderAdapter extends BaseAdapter {
    public ArrayList<HashMap<String, String>> orderArray;
    private Context mContext;
    String statusCode, status, orderId;
    Intent i;

    public OrderAdapter(Context paramContext, ArrayList<HashMap<String, String>> productList) {
        this.mContext = paramContext;
        this.orderArray = productList;
    }

    public int getCount() {
        return this.orderArray.size();
    }

    public Object getItem(int paramInt) {
        return Integer.valueOf(paramInt);
    }

    public long getItemId(int paramInt) {
        return paramInt;
    }

    @SuppressWarnings("static-access")
    public View getView(int paramInt, View paramView, ViewGroup paramViewGroup) {
        LayoutInflater localLayoutInflater = (LayoutInflater) this.mContext.getSystemService("layout_inflater");
        Viewholder localViewholder = null;
        if (paramView == null) {
            paramView = localLayoutInflater.inflate(R.layout.raw_order, paramViewGroup, false);
            localViewholder = new Viewholder();

            localViewholder.orderNo = ((TextView) paramView.findViewById(R.id.tv_order_no));
            localViewholder.date = ((TextView) paramView.findViewById(R.id.tv_date));
            localViewholder.status = ((TextView) paramView.findViewById(R.id.tv_stats));
            localViewholder.proName = ((TextView) paramView.findViewById(R.id.tv_proname));
            localViewholder.amount = ((TextView) paramView.findViewById(R.id.tv_amt));
            localViewholder.link = ((TextView) paramView.findViewById(R.id.tv_link));

            paramView.setTag(localViewholder);

        } else {
            localViewholder = new Viewholder();
            localViewholder = (Viewholder) paramView.getTag();
        }
        System.out.println("::::::::::::::array indexes::::::::::::" + orderArray.get(paramInt));
        System.out.println(":::::::::::::::;;status::::::::::::::::::::;;" + orderArray.get(paramInt).get(Const.TAG_ORDER_STATUS_ID));
        statusCode = orderArray.get(paramInt).get(Const.TAG_ORDER_STATUS_ID);
        getStatus(statusCode);
        orderId = orderArray.get(paramInt).get(Const.TAG_ORDER_ID);
        localViewholder.orderNo.setText("Order no.:" + orderId);

        localViewholder.date.setText(orderArray.get(paramInt).get(Const.TAG_DATE_ADDED));
        localViewholder.status.setText(status);
        localViewholder.proName.setText(orderArray.get(paramInt).get(Const.TAG_PRODUCT_NAME));
        localViewholder.amount.setText(orderArray.get(paramInt).get(Const.TAG_TOTAL));
        if (statusCode.equals("1") || statusCode.equals("2") || statusCode.equals("7") || statusCode.equals("11")) {
            localViewholder.link.setVisibility(View.VISIBLE);
            localViewholder.link.setText("Review and pay");
            System.out.println(":::::::::::::::inside IF::::::::::::::::::;" + orderId);
        } else {
            System.out.println(":::::::::::::::inside else::::::::::::::::::;" + orderId);
            localViewholder.link.setVisibility(View.INVISIBLE);
        }
        localViewholder.link.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent i = new Intent(mContext, OrderWebViewActivity.class);
                i.putExtra(Const.TAG_ORDER_ID, orderId);
                mContext.startActivity(i);
            }
        });

        return paramView;

    }

    static class Viewholder {

        TextView orderNo;
        TextView date;
        TextView status;
        TextView proName;
        TextView amount;
        TextView link;

    }

    /*
     * status based Links...........!!!!!
     */


    }
}
公共类OrderAdapter扩展了BaseAdapter{ 公共ArrayList orderArray; 私有上下文; 字符串statusCode、status、orderId; 意图一; public OrderAdapter(上下文参数上下文、ArrayList产品列表){ this.mContext=paramContext; this.orderArray=productList; } public int getCount(){ 返回此.orderArray.size(); } 公共对象getItem(int参数){ 返回整数.valueOf(paramInt); } 公共长getItemId(int参数){ 返回参数; } @抑制警告(“静态访问”) 公共视图getView(int-paramInt、View-paramView、ViewGroup-paramViewGroup){ LayoutInflater localLayoutInflater=(LayoutInflater)this.mContext.getSystemService(“布局\充气机”); Viewholder localViewholder=null; if(paramView==null){ paramView=localLayoutInflater.flate(R.layout.raw_顺序,paramViewGroup,false); localViewholder=新的Viewholder(); localViewholder.orderNo=((TextView)paramView.findviewbyd(R.id.tv_order_no)); localViewholder.date=((TextView)paramView.findViewById(R.id.tv_date)); localViewholder.status=((TextView)paramView.findViewById(R.id.tv_stats)); localViewholder.proName=((TextView)paramView.findViewById(R.id.tv_proName)); localViewholder.amount=((TextView)paramView.findviewbyd(R.id.tv_amt)); localViewholder.link=((TextView)paramView.findViewById(R.id.tv_link)); setTag(localViewholder); }否则{ localViewholder=新的Viewholder(); localViewholder=(Viewholder)paramView.getTag(); } System.out.println(“:::数组索引::::”+orderArray.get(paramInt)); System.out.println(“:::;;状态:::::;”+orderArray.get(paramInt.get(Const.TAG_ORDER_status_ID)); statusCode=orderArray.get(paramInt).get(Const.TAG\u ORDER\u STATUS\u ID); 获取状态(状态代码); orderId=orderArray.get(paramit).get(Const.TAG\u ORDER\u ID); localViewholder.orderNo.setText(“订单号:”+orderId); localViewholder.date.setText(orderArray.get(paramInt).get(Const.TAG_date_ADDED)); localViewholder.status.setText(状态); localViewholder.proName.setText(orderArray.get(paramInt.get(Const.TAG_PRODUCT_NAME)); localViewholder.amount.setText(orderArray.get(paramInt.get(Const.TAG_TOTAL)); 如果(statusCode.equals(“1”)| | statusCode.equals(“2”)| | statusCode.equals(“7”)| | statusCode.equals(“11”)){ localViewholder.link.setVisibility(View.VISIBLE); localViewholder.link.setText(“审核和支付”); System.out.println(“::::::内部IF:::::::;”+orderId); }否则{ System.out.println(“:::::内部else::::::::;“+orderId”); localViewholder.link.setVisibility(View.INVISIBLE); } localViewholder.link.setOnClickListener(新的OnClickListener(){ @凌驾 公共void onClick(视图v){ //TODO自动生成的方法存根 意图i=新意图(mContext,OrderWebViewActivity.class); i、 putExtra(Const.TAG\u ORDER\u ID,orderId); mContext.startActivity(i); } }); 返回参数视图; } 静态类视窗夹{ TextView订单号; 文本查看日期; 文本视图状态; TextView proName; 文本浏览量; 文本视图链接; } /* *基于状态的链接。。。。。。。。。。。!!!!! */ } }
您需要删除以下两项内容

  • localViewholder中删除静态变量

  • 在执行
    getTag()
    时,您将再次创建
    localViewholder的新实例
    将其删除


  • 为什么您的viewholder类是静态的。?所以这可能是问题所在?第二件事是在
    getTag()
    的时候,您再次创建了
    localViewholder
    @SilentKiller的新实例,它对我有效…谢谢兄弟。!我补充了这个建议作为答案。