Ich habe einen Adapter für Recyclerview. Wo ich Array-Liste von meiner Aktivität wie übergeben Daten ist ArrayList einige Daten.Wie implementiert man das Kontrollkästchen in RecyclerView?
AlternativeAdapter alternativeAdapter= new AlternativeAdapter(AlternativeActivity.this, data);
recyclerView.setAdapter(alternativeAdapter);
In der AlternativeAdapter-Klasse habe ich eine Textansicht und ein Kontrollkästchen. Ich kann alle Textelemente mit Kontrollkästchen anzeigen.
In der AlternativeAdapter Klasse
public class AlternativeCurrencyAdapter extends RecyclerView.Adapter<AlternativeCurrencyAdapter.ViewHolder>{
ArrayList<String> currencyListArray;
Context context;
View view1;
ViewHolder viewHolder1;
TextView textView;
private int selectedPosition = -1;// no selection by default
public AlternativeCurrencyAdapter(Context context1, ArrayList<String> currencyListArray){
this.currencyListArray = currencyListArray;
context = context1;
}
public class ViewHolder extends RecyclerView.ViewHolder{
public TextView username;
public CheckBox chkSelected;
public ViewHolder(View v){
super(v);
username = (TextView)v.findViewById(R.id.username);
chkSelected = (CheckBox) v.findViewById(R.id.chkSelected);
itemView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
// get position
int pos = getAdapterPosition();
// check if item still exists
if(pos != RecyclerView.NO_POSITION){
String clickedDataItem = currencyListArray.get(pos);
Toast.makeText(v.getContext(), "You clicked " + clickedDataItem, Toast.LENGTH_SHORT).show();
}
}
});
}
}
@Override
public AlternativeCurrencyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
view1 = LayoutInflater.from(context).inflate(R.layout.alternative_currency_adapter_list,parent,false);
viewHolder1 = new ViewHolder(view1);
return viewHolder1;
}
@Override
public void onBindViewHolder(ViewHolder holder, final int position){
holder.username.setText(currencyListArray.get(position));
}
@Override
public int getItemCount(){
return currencyListArray.size();
}
}
Auf diese Weise das Element der Array-Liste angezeigt wird, aber mein Bedarf an Artikel ist im linken Ecke und Kontrollkästchen der einzelnen Elemente angezeigt werden sollte rechten Ecke angezeigt werden soll. Wenn jemand auf Checkbox-Toast-Nachricht klickt, sollte kommen, wie Sie XYZ-Element ausgewählt haben. Und nur einzelne Auswahl ist nicht Multi-Auswahl erforderlich.
wenn ich
holder.chkSelected.setChecked(currencyListArray.get(position).isSelected());
I zeigt Zeitfehler kompilieren. Kann nicht aufgelöst werden isSelected()
Bitte führen Sie mich.
Sie versuchen, auf isSelected is Arraylist-Methode zuzugreifen, isSelected() ist jedoch keine Arraylist-Methode. currencyListArray.get (position) ist die Rückgabewertnummer in der ArrayList-Position, die nicht zurückgegeben wird, wenn das Kontrollkästchen aktiviert ist oder nicht. –
Bitte überprüfen Sie diesen Link für eine einzelne Auswahl in RecyclerView https://stackoverflow.com/questions/39127008/how-can-i-select-only-one-checkbox-in-recyclerview-and-notifydataset-changed –