2016-12-18 9 views
0

私はRecyclerViewにデータリストを表示しています。私がしたいことは、ユーザーがそのアイテムをタップしたときに、そのユーザーとのリンクを解除するかどうかを尋ねるときです。私はこれをアプリケーションのさまざまな時点ですでに行っており、完全に機能することに基づいてこのコードを書いていますRecyclerViewOnItemTouchListenerですが、これは何らかの理由でこれをクリックして登録することを拒否しています。データにはRecyclerViewが入力されます。クリックすることはできません。明白な何かを逃したことがありますか?Android RecyclerView OnItemTouchListenerが機能しない

public void configurePage() { 
    Log.d(TAG, "test = " + listOfIDs.size()); 
    mLayoutManager = new LinearLayoutManager(AgentViewUsers.this); 
    mAdapter = new AgentUserViewAdapter(listOfItems); 
    mRecyclerView.addOnItemTouchListener(new RecyclerTouchListener(getApplicationContext(), mRecyclerView, new RecyclerItemClickListener() { 
     @Override 
     public void onClick(View view, int position) { 
      AlertDialog.Builder build = new AlertDialog.Builder(AgentViewUsers.this); 
      build.setTitle("Unlink this user?"); 
      build.setMessage("Are you sure you wish to unlink this user?"); 
      build.setNegativeButton("Yes", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) { 
        // database code that deletes that user from firebase. 
       } 
      }); 
      build.setPositiveButton("No", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) { 
        dialogInterface.dismiss(); 
       } 
      }); 
     } 

     @Override 
     public void onLongClick(View view, int position) { 

     } 
    })); 
    mRecyclerView.addItemDecoration(new DividerItemDecoration(AgentViewUsers.this,DividerItemDecoration.VERTICAL_LIST)); 
    mRecyclerView.setLayoutManager(mLayoutManager); 
    mRecyclerView.setAdapter(mAdapter); 
    spinner.setVisibility(View.GONE); 
    // for loop that populates listOfItems from an already populated listOfIDs; 
} 
+0

なぜ、ビューホルダーアダプターにonclickを入れようとしないのですか? –

+0

私が知っている限り、Firebaseと対話するために様々なビットを行うためにOnClickが必要であり、このアクティビティにのみ存在するかなりの量のコンテンツに依存しているため、この場合はできません。これは、私がアプリケーションのいくつかの他の場所でこれを行ってきた方法であり、ここ以外のどこかで意図したとおりに動作します。 – markeh21

+1

ランダムなコメントです。そのAlertDialogでshow()を呼び出すことをお勧めします。また、リストアイテムのカスタムレイアウトを使用していて、そのレイアウトに異なる州のための異なるドロウアブルがない(プレスされた、リリースされた) –

答えて

1

さて、そのAlertDialogでshow()を呼び出すことをお勧めします。また、リストアイテムにカスタムレイアウトを使用していて、そのレイアウトに異なる州(つまりプレスされたもの)に異なるドロウアブルがない場合もあります。

関連する問題