2016-04-07 17 views
0

カスタムアダプターを使用するListFragmentを拡張するフラグメントがあります。ボタンClick for ListViewFragment

ListViewの各行はButtonを持っており、私は次のように私はボタンのリスナーを設定することができますAdapter

getView方法で知っている:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    ViewHolder viewHolder; //View lookup cached stored in tag. 
    if(convertView == null){ 
     viewHolder = new ViewHolder(); 
     LayoutInflater inflater = LayoutInflater.from(getContext()); 
     convertView = inflater.inflate(R.layout.pay_debit_credit_item, parent, false); 
     viewHolder.makePayment = (Button) convertView.findViewById(R.id.paymentButton); 
     viewHolder.makePayment.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(getContext(), "Hellooo", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     convertView.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 

    //... 
    //Return view to be rendered. 
    return convertView; 
} 

正常に動作しますが、どのように私はこのアダプタを使用しているフラグメントに位置xのボタンがクリックされたことを通知しますか?その後、

public interface IClickListener { 
    public void clicked(View view,int position); 
} 

あなたのアダプタクラスでそれをインスタンス化します:

+1

[フラグメントとアダプタの間のインターフェイスを作成するにはどうすればいいですか](http://stackoverflow.com/a/15444411/1893220) –

答えて

2

最初のインターフェイスを作成

viewHolder.button.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       clicListener.clicked(v,po); 
       } 
     }); 

とで:ボタンのクリックイベントに設定されGetViewメソッドで

IClickListener clicListener; 
    public ListAdapterConstructor(Context context, Cursor c,IClickListener listener) { 
     super(context, c); 
     mContext = context; 
     this.clicListener = listener; 
    } 

少なくともリスナーを実装してイベントリスナーを実装する:

public class YourFragment extends Fragment implements IClickListener { 
+0

ahh ..私はFragmentにインターフェイスを使用していますアクティビティのやりとりはできませんでしたが、アダプタとフラグメントのインタラクションのインターフェイスを使用するための点は接続しませんでした。ありがとうございました! – Alan