RecyclerView(およびGridLayout)を使用してグリッドに動的ボタンを配置しています。 RecyclerViewを使用して作成され、Gridlayoutに配置されるときに、各ダイナミックボタンに異なるonClickListenerを設定する最も良い方法は何ですか?RecyclerViewを使用する動的ボタンの異なるonClickListeners
私のボタンは、下のメソッド "createButton"のRecyclerViewにドロウアブルを渡すことで、ユーザアクションに応じてランダムに作成されます。一度に1つのdrawableだけがmyLayoutに渡され、新しいonClickListenerを作成する必要があります。これについて最善の方法は何ですか?
private GridLayoutManager lLayout;
RecyclerViewAdapter rcAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
List<ItemObject> myList = new ArrayList<>();
rcAdapter = new RecyclerViewAdapter(getActivity(),myList);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.home_fragment, container, false);
lLayout = new GridLayoutManager(getActivity(), 3,
GridLayoutManager.HORIZONTAL, false);
RecyclerView rView = (RecyclerView)view.findViewById(R.id.recycler_view);
rView.setHasFixedSize(true);
rView.setLayoutManager(lLayout);
rView.setAdapter(rcAdapter);
return view;
}
public void createButton (Drawable d, String appName){
rcAdapter.addItem(new ItemObject(appName, d));
}
感謝を設定する必要があります!私はそのアプローチを知っていましたが、ボタンごとに異なるonClickListenerを設定できることはわかりませんでした。あなたが "コンテキスト"を "MyHolder"(あなたが与えたコード)に渡す方法も知っているのだろうかと思っていました。私のonClickListenerは別のアクティビティを開いているので、 "getApplicationContext"を使う必要があるからです。あなたはこれを行う方法を知っていますか? – Natalie
@Natalieすべてのビューに 'getContext()'メソッドがあります。これは、 'onClick'の間にクリックされたビューを受け取ります。 – Budius
はい、あります。私は "view.getContext"を使用してonClickのコンテキストを使用できることに気付きました。ありがとう! – Natalie