0

私は何をしようとしていますか?

行をRecyclerView保持し、 のように見える がありListViewます。これらのリストの行は で定義されていfeed_listview_row.xmlます。私はRecyclerAdapterこれのための を持っており、それはあなたが下に見ることができるRecyclerViewと呼ばれています。Feed_Recycler_Adapter.java

AlertDialogユーザー Long がこれらの行のいずれかをクリックしたときに表示したいと思います。ユーザーがこの行を削除するか保持するかについて質問があります。ユーザーが行の削除を承認した後。ユーザーにSnackBar通知し、ユーザーにそれを取り戻す最後のチャンスを与える必要があります。

問題

を表示できないSnackBarため、表示できませんCoordinatorLayout

コード

Feed_Recycler_Adapter.java

holder.layout.setOnLongClickListener(new View.OnLongClickListener() {
  @Override
 public boolean onLongClick(View v) {

  cl = (CoordinatorLayout) v.findViewById(R.id.FeedCoordinatorLayout); 
   /*this row above is failing to fill the cl variable. 
    This cl variable returns null! I need to get the coordinatorlayout for snackbar*/
    String selectedListId = mDataset.get(position).getListId();
    String selectedPostId = mDataset.get(position).getPostId();
    Push_Options.ownerOrfollower(v.getContext(), selectedListId, selectedPostId, cl);
              return true;
                    }
                });

私は試した

Feed_Recycler_Adapter.ViewHolder onCreateViewHolder で content_feed を膨らませようとし、それをビューとして使用して FeedCoordinatorLayout を取得しましたが、問題は解決しませんでしたが、cl が null ではないという理由だけでエラーは発生しませんでした。しかし、どちらも示しませんでしたSnackBar

4

2 に答える 2

0

dariush f's answer から少し助けて解決策を見つけました。

CoordinatorLayout フィールドを持つように既存のコンストラクターを変更しました。

class Feed_Recycler_Adapter extends RecyclerView.Adapter<Feed_Recycler_Adapter.ViewHolder> {

public static String TAG = "Feed Recycler Adapter";
private CoordinatorLayout cl;
private ArrayList<Feed_List_Class> mDataset;
//CoordinatorLayout cl;
// Provide a suitable constructor (depends on the kind of dataset)
Feed_Recycler_Adapter(ArrayList<Feed_List_Class> myDataset,CoordinatorLayout coordinatorLayout) {
    cl=coordinatorLayout;
    mDataset = myDataset;
}

そして、このアダプターをインスタンス化するときに、コーディネーター レイアウトを送信しています。このような:

CoordinatorLayout cl = (CoordinatorLayout) findViewById(R.id.FeedCoordinatorLayout) ;
mAdapter = new Feed_Recycler_Adapter(posts,cl);

onLongClick メソッドは既に Adapter クラス内にあるため、コンストラクターによって設定された cl 変数を使用してスナックバーを作成できます。

Push_Options.ownerOrfollower(v.getContext(), selectedListId, selectedPostId, cl);
于 2016-10-03T23:51:48.883 に答える