2017-10-10 76 views
0
@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; 
}} 

我有一个问题,使用自定义布局与Textview和两个按钮添加和取消的自定义布局。 我想在按下按钮添加或取消按钮后从MainActivity调用方法。吐司工作正常,但我不能调用方法。Android控制自定义列表视图中的按钮

+0

使用listner并将它传递给主要活动来调用主要活动的方法 –

+0

可以详细说明一下吗? –

+0

您需要创建监听器'interface'并将其传递到您的适配器并将其实施到您的活动中 – akhilesh0707

回答

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; 

,我通过它nitialize在构造

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标志值调用方法。你打电话给你的适配器