gpt4 book ai didi

android - 从 ListView Android 中获取所有选中的项目

转载 作者:行者123 更新时间:2023-11-29 17:47:30 26 4
gpt4 key购买 nike

我是 android 编程的菜鸟,我正在使用 Android studio,我有一个包含两个 TextView 和一个复选框的 ListView 项。我正在尝试创建一个带有复选框的 listiview,因此当单击特定按钮时,我将获得一个列表,其中包含已选中项目的名称。尝试寻找教程和其他有用的东西,但就是找不到。谢谢大家 :)这是我为 ListView 定制的适配器:

public class postadapter extends ArrayAdapter<post> {
ArrayList<post> list = new ArrayList<post>();
Context context;
int layoutResourceId;
post data[] = null;

public postadapter(Context context, int layoutResourceId, ArrayList<post> list) {
super(context, layoutResourceId, list);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.list = list;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ViewHolder holder = null;

if(row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);

holder = new ViewHolder();
holder.txtTitle = (TextView) row.findViewById(R.id.textView1);
holder.txtdescription = (TextView) row.findViewById(R.id.textView2);
holder.chk = (CheckBox) row.findViewById(R.id.chkbox);

row.setTag(holder);
holder.chk.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
CheckBox cb = (CheckBox) v;
post post1 = (post) cb.getTag();

post1.setSelected(cb.isChecked());
}
});
}
else
{
holder = (ViewHolder)row.getTag();
}

post post1 = list.get(position);
holder.txtTitle.setText(post1.getPostname());
holder.txtdescription.setText("מספר שומרים:"+post1.getnumberguards()+" משעה: "+post1.getstime()+" עד שעה: "+post1.getetime());
holder.chk.setChecked(post1.isSelected());
return row;
}

static class ViewHolder
{

TextView txtTitle;
TextView txtdescription;
CheckBox chk;

}
}

最佳答案

您可以维护一个包含所有选中复选框的 bool 数组-

  1. 在您的适配器中声明 bool 数组 - boolean[] checkBoxState
  2. 在适配器的构造函数中初始化它 - checkBoxState= new boolean[list.size()]
  3. 然后在您的 getView 方法中使用这个数组 -

     holder.checkBox.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v)
    {
    if(((CheckBox)v).isChecked())
    {
    checkBoxState[position]=true;
    }
    else
    {
    checkBoxState[position]=false;

    }
    }
    });
  4. 从这个数组中检索位置(这里的适配器是您自定义适配器的对象)-

    for(int k=0;k

    如果(适配器.checkBoxState[k]==true) { }`

关于android - 从 ListView Android 中获取所有选中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25464570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com