Ich verwende RecyclerView (und GridLayout), um dynamische Schaltflächen in einem Raster zu platzieren. Was ist der beste Weg, um einen unterschiedlichen onClickListener für jede dynamische Schaltfläche einzurichten, wie sie mit RecyclerView erstellt und im Gridlayout platziert wird?Verschiedene onClickListeners für dynamische Schaltflächen mit RecyclerView
Meine Schaltflächen werden nach dem Zufallsprinzip erstellt, abhängig von einer Benutzeraktion, indem Sie einen Drawable an meine RecyclerView in der Methode "createButton" weiterleiten. Nur ein Zeichen wird zu einem Zeitpunkt an mein GridLayout übergeben und jedes Mal muss ein neuer onClickListener erstellt werden. Was ist der beste Weg, dies zu tun?
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));
}
Dank richtig eingestellt! Ich wusste von diesem Ansatz, wusste aber nicht, dass es in der Lage wäre, für jede andere Schaltfläche einen anderen onClickListener zu setzen. Ich habe mich gefragt, ob Sie auch wissen, wie man "context" an "MyHolder" (in dem Code, den Sie gaben) weitergibt. Da mein onClickListener eine andere Aktivität öffnet, muss ich "getApplicationContext" verwenden. Weißt du wie das geht? – Natalie
@Natalie jede Ansicht hat eine Methode 'getContext()' Sie erhalten die angeklickte Ansicht während 'onClick'. – Budius
Ja, ich verstehe. Ich erkannte, dass ich "view.getContext" verwenden kann, um Kontext in onClick zu verwenden. Vielen Dank! – Natalie