2017-02-13 8 views
0

RecyclerView.Adapterでアイテムが選択されている場合は、処理する必要があります。今私はビュー上にタッチリスナーを持っていますが、私は "あまり意味のないトリガー"が必要です。リストがスクロールされている場合、私はタッチを有効にしたくありません。しかし、私は "賢い修正"を避けるだろう。それはdidSelectRowAtIndexPathのようなそれのための任意の標準化された解決策は、UITableViewのiOSにイベントハンドラのメカニズムがあります。 Androidには何もありませんか?AndroidでRecyclerView.AdapterのSELECTIONを処理する方法は?

ないことがある:

boardUserHolder.imageButton.setOnTouchListener(new View.OnTouchListener() 
     { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) 
      { 

答えて

0

ViewHolderの代わり onTouchListenerにonClickリスナーを実装するようにしてください。そして、 getAdapterPosition()メソッドを使用して選択位置を取得することができます。

public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
    public TextView mTextView; 

    private ViewHolder(View itemView, TextView textView) { 
     super(itemView); 
     itemView.setOnClickListener(this); 
     mTextView = textView; 
    } 

    @Override 
    public void onClick(View view) { 
     Toast.makeText(view.getContext(), "position = " + getAdapterPosition(), Toast.LENGTH_SHORT).show(); 
    } 

}

0

あなたは画像をクリックしたときには、doSmt()にしたいと言うことができます。

1 - あなたのアダプタクラスのインタフェースます

private myInterface _myInterface ; 

3 - あなたのアダプタ内部_myInterfaceのsetter関数を作る:あなたのアダプタクラスのグローバル変数を作る

public interface myInterface = { 
     void doSmt(); 
}; 

2-クラス:

public void setInterface(myInterface m){ 
    this._myInterface = m l 
} 

、4-今、私たちは、この私を使用するために、()メソッドdoSmtとのインタフェースを持っていますTHODあなたのImageViewの上でクリックしたときに、単にこれを行う:あなたは今のコードを実行する場合doSmt()が空であるため、何も起こりません

@Override 
     public boolean onTouch(View v, MotionEvent event) 
     { _myInterface.doSmt(); } 

5-、今、(自分の活動を行うの内側にあなたのRecyclerViewを使用それは)インターフェイスmyInterfaceを実装し、あなたdoSmt()も実装する必要がありますし、あなたのやりたいアクションを記入する必要があります。あなたの活動に は、あなたがコードを実行し、ImageViewの上でクリックすると、あなたが今、ステップ3

myAdapter.setInterface(this); 

で作成するsetterメソッドを使用し、doSmt内のコードは、()を実行します。

0
public static class ViewHolder extends RecyclerView.ViewHolder implements AdapterView.OnClickListener { 
public TextView mTextView; 

private ViewHolder(View itemView, TextView textView) { 
    super(itemView); 
    itemView.setOnClickListener(this); 
    mTextView = textView; 
} 

@Override 
public void onClick(View view) { 
    Toast.makeText(view.getContext(), "position = " + getAdapterPosition(), Toast.LENGTH_SHORT).show(); 
} 
関連する問題