Java 将复选框与recyclerview一起使用
我是android新手。我无法使用带有复选框的回收视图。Java 将复选框与recyclerview一起使用,java,android,Java,Android,我是android新手。我无法使用带有复选框的回收视图。 我使用的是带有复选框的回收器视图。现在,带有复选框的标题应该出现在“我的活动”中。我已经在数组列表中添加了复选框selected title如何在活动中获取它们? 我只需要在活动中选中复选框数组列表 下面是我的适配器类 public class CheckboxAdapter extends RecyclerView.Adapter<CheckboxAdapter.ViewHolder> {
我使用的是带有复选框的回收器视图。现在,带有复选框的标题应该出现在“我的活动”中。我已经在数组列表中添加了复选框selected title如何在活动中获取它们? 我只需要在活动中选中复选框数组列表 下面是我的适配器类
public class CheckboxAdapter extends
RecyclerView.Adapter<CheckboxAdapter.ViewHolder> {
private List<SearchListItem> searchListItems;
private OnSearchItemSelected onSearchItemSelected;
public ArrayList<String> addTitle;
CheckboxAdapter(List<SearchListItem> arrayList, OnSearchItemSelected onSearchItemSelected) {
this.searchListItems = arrayList;
this.onSearchItemSelected = onSearchItemSelected;
}
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
@BindView(R.id.title)
TextView mTxtTitle;
@BindView(R.id.checkBox)
CheckBox checkBox;
ViewHolder(View row) {
super(row);
ButterKnife.bind(this, row);
row.setOnClickListener(this);
}
@Override
public void onClick(View view) {
int pos = getAdapterPosition();
SearchListItem searchListItem = searchListItems.get(pos);
try {
onSearchItemSelected.onClick(pos, searchListItem);
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
public int getItemCount() {
// TODO Auto-generated method stub
return searchListItems.size();
}
@Override
public void onBindViewHolder(@NonNull final CheckboxAdapter.ViewHolder holder, final int position) {
SearchListItem output = searchListItems.get(position);
holder.mTxtTitle.setText(output.title);
holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
addAllTitle(holder);
}
}
});
}
public OnSearchItemSelected getOnSearchItemSelected() {
return onSearchItemSelected;
}
public void addAllTitle(ViewHolder holder) {
for (int i = 0; i < addTitle.size(); i++) {
addTitle.add(String.valueOf(holder.mTxtTitle));
}
}
@NonNull
@Override
public CheckboxAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int arg1) {
Context context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View contactView = inflater.inflate(R.layout.adapter_checkbox, parent, false);
return new CheckboxAdapter.ViewHolder(contactView);
}
}
公共类CheckboxAdapter扩展
RecyclerView.适配器{
私有列表搜索列表项;
私有OnSearchItemSelected OnSearchItemSelected;
公共ArrayList addTitle;
CheckboxAdapter(列表arrayList,OnSearchItemSelected OnSearchItemSelected){
this.searchListItems=arrayList;
this.onSearchItemSelected=onSearchItemSelected;
}
类ViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
@BindView(R.id.title)
文本视图mTxtTitle;
@BindView(R.id.checkBox)
复选框;
视图保持架(视图行){
超级(世界其他地区);
把(这一排)捆起来;
row.setOnClickListener(this);
}
@凌驾
公共void onClick(视图){
int pos=getAdapterPosition();
SearchListItem SearchListItem=searchListItems.get(pos);
试一试{
onSearchItemSelected.onClick(pos,searchListItem);
}捕获(例外e){
e、 printStackTrace();
}
}
}
@凌驾
public int getItemCount(){
//TODO自动生成的方法存根
返回searchListItems.size();
}
@凌驾
public void onBindViewHolder(@NonNull final CheckboxAdapter.ViewHolder,final int位置){
SearchListItem输出=searchListItems.get(位置);
holder.mTxtTitle.setText(output.title);
setOnCheckedChangeListener(newcompoundButton.OnCheckedChangeListener()){
@凌驾
检查更改后的公共无效(复合按钮视图,布尔值已检查){
如果(已检查){
addAllTitle(持有人);
}
}
});
}
公共OnSearchItemSelected getOnSearchItemSelected(){
返回所选的搜索结果;
}
公共无效addAllTitle(视图持有者){
对于(int i=0;i
您必须在模型类中添加一个布尔值
,例如isChecked
如果选中了复选框
,则将其设为真
,否则假
获取在活动
中传递给适配器
的相同列表,此列表将显示所有复选框
前
在活动中
adapter = new MyAdapter(myList);
/*you can get all checked boxes here, paste this code where you need it*/
for(i=0; i<myList.size();i++){
if(myList.isChecked()){
//... do somehing ...
}
}
您可以使用接口来做这件事,您可以在这里寻找一个示例如何获取(mylist.isChecked)?您必须在您的模型类中添加一个
boolean
,例如isChecked
,并使其成为getter setter方法
onBindViewHolder() method
holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
myList.setchecked(isChecked);
}
});