2016-05-09 4 views
1

以下はコードRecyclerViewonBindViewHolderのコードです。RecyclerViewでボタンを1つだけ作成するスクロール

リサイクラビューでは、以下のようにボタンを動的に作成しています。

デバイスでアプリケーションをスクロールすると(実際のデバイスで実行中)、ボタンが再度作成されます。

cardviewには1つのボタンが付いていますが、これまでにスクロールするとボタンが作成されます。

は一度だけ作成し、既存のholder.phoneContainer内部viewsまたは

を削除する方法?

答えて

1

あなたが行うことができますphoneContainer内部のみの単一Viewがある場合:

holder.phoneContainer.removeAllViews(); 
holder.phoneContainer.addView(button1); 
+0

複数のボタンがある場合はどうなりますか? –

+1

'ViewHolder'の中に追加された' button1'への参照を保持し、 'holder.phoneContainer.removeView(button1)'を使用する必要があります。私は言うべきですが、 'アダプタ 'を使うこの方法はかなりひどいです。 –

+0

私は3つのボタンを動的に作成しました。 'removeAllViews()'を使って問題を解決しました。 スクロール中に毎回すべてのビューを削除するメモリを消費しますか? [RecyclerView.Adapter Documentation](https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html) –

2

あなたはあなたのコンテナ内のビューを削除し、ボタンを追加する必要があります。

 holder.phoneContainer.removeAllViews(); 
     Button button1 = new Button(context); 
     LinearLayout.LayoutParams params = new LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
     holder.phoneContainer..addView(button1, params); 
関連する問題