Android控制自定义列表视图中的按钮

时间:2017-10-10 12:09:46

标签: android listview

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    Holder holder=new Holder();
    View rowView;
    rowView = inflater.inflate(R.layout.receiptlistsample, null);
    holder.product=(TextView) rowView.findViewById(R.id.product);
    holder.quantity=(TextView) rowView.findViewById(R.id.quan);
    holder.price=(TextView) rowView.findViewById(R.id.price);
    holder.add = (ImageButton)rowView.findViewById(R.id.plus);
    holder.cancel = (ImageButton)rowView.findViewById(R.id.minus);
    holder.product.setText(pro[position]);
    holder.quantity.setText(quant[position]);
    holder.price.setText(pri[position]);
    holder.add.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
               Toast.makeText(context, "add ", Toast.LENGTH_LONG).show();
        }
    });
    holder.cancel.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(context, "cancel ", Toast.LENGTH_LONG).show();
        }
    });

    return rowView;
}}

我在使用customAdapter for listview时遇到问题,它有一个带Textview的自定义布局和两个按钮添加和取消。 我想在按下按钮添加或取消后从MainActivity调用方法。吐司工作正常,但我不能称之为方法。

1 个答案:

答案 0 :(得分:0)

这样做首先创建界面

public interface GetData {
    public void getvalue(String flag);
}

现在通过适配器调用

传递它
mAdapter = new SearchAdapter(Search_Data.this, eventlistsubcat, new GetData() {
                    @Override
                    public void getvalue(String flag) {

                        strlistner=flag.toString();

                      if(strlistner.equals("add")){
                        //call your add method
                        }
                    }
                });

在适配器类

声明接口的对象

 GetData listner;

并在构造函数中初始化

 public SearchAdapter(Context mContext, ArrayList<abx_Detail> feedItemList, GetData listner) {
        this.mContext = mContext;
        this.feedItemList = feedItemList;
        this.listner=listner;
        itemcheck = new boolean[feedItemList.size()];
    }

点击你的按钮调用

listner.getvalue(flag);

所以根据mainactivity中的标志值检查或调用方法。你称之为适配器的地方