Gya*_*thi 5 checkbox android android-recyclerview
我有一个用于 recyclerview 的适配器。我从我的活动传递数组列表的地方,比如数据是具有一些数据的 ArrayList。
AlternativeAdapter alternativeAdapter= new AlternativeAdapter(AlternativeActivity.this, data);
recyclerView.setAdapter(alternativeAdapter);
Run Code Online (Sandbox Code Playgroud)
在 AlternativeAdapter 类中,我有一个文本视图和复选框。我可以用复选框显示所有文本项。
在 AlternativeAdapter 类中
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();
}
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,数组列表的项目正在显示,但我需要的是项目应该显示在左角,每个项目的复选框应该显示在右上角。当单击复选框时,吐司消息应该像您选择的 XYZ 项目一样出现。并且只需要单选而不是多选。
当我使用
holder.chkSelected.setChecked(currencyListArray.get(position).isSelected());
Run Code Online (Sandbox Code Playgroud)
我显示编译时错误。无法解析isSelected()
请指导我。
首先,您的currencyListArray 是字符串的arraylist,因此它不会返回“isSelected()”对不起!
现在来满足您的要求,您需要在选中任何复选框时显示消息。
所以代码如下:
@Override
public void onBindViewHolder(ViewHolder holder, final int position){
holder.username.setText(currencyListArray.get(position));
holder.chkSelected.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
//do your toast programming here.
}
});
}
Run Code Online (Sandbox Code Playgroud)
现在来到你的第二个要求,一次只选择一个项目:这是代码:
chkSelected.setChecked(position== selectedPosition);
chkSelected.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked)
{
selectedPosition = position;
}
else{
selectedPosition = -1;
}
notifyDataSetChanged();
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5450 次 |
| 最近记录: |