2017-10-10 8 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と2つのボタンの追加とキャンセルのカスタムレイアウトを持つlistviewのcustomAdapterを使用する際に問題が発生しています。 ボタンの追加またはキャンセルを押すと、MainActivityからメソッドを呼び出したいとします。トーストはうまくいきますが、私は方法を呼び出すことはできません。Androidカスタムリストビュー内のボタンの制御

+0

それのためのリスナーを使用して主な活動の方法を呼び出すには –

+0

あなたはもう少し詳しく説明できますか? –

+0

リスナー 'interface'を作成してアダプタに渡し、あなたのアクティビティに実装する必要があります。 – akhilesh0707

答えて

0

この方法は、まず、今のアダプタクラスで

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 interface GetData { 
    public void getvalue(String flag); 
} 

を作成してくださいこの

listner.getvalue(flag); 

のようなコンストラクタで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()]; 
    } 

あなたのボタンのコールのクリックでそうmainactivityでフラグ値を記載の方法を確認するか、呼び出します。どこにあなたのアダプタを呼び出す

関連する問題