gpt4 book ai didi

Android - ListView 中的单选按钮?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:44 27 4
gpt4 key购买 nike

我有一个场景,我们应该在 ListView 中有一个单选模式单选按钮。当我点击单选按钮时,它应该进入启用状态。当我点击整个项目时,它应该重定向到新 Activity 。我引用了下面的链接

link1 , link2

我可以找出选择题模式的方法。但不适用于单选模式。对此有什么想法吗?

???编辑???如何在listview中找到item对应标签的tag

最佳答案

一种方法可以,但我不知道它是否完美。

当您单击另一个单选按钮时跟踪单选按钮被选中的 ListView 的位置 ID,然后执行 setOnCheckedChangeListener(listener) 并检查已经选中和取消选中的位置那个单选按钮。

您可以将单选按钮的状态存储到添加到 ListView 中的自定义模型(包含 TextView 、 ImageView 、单行 ListView 的单行控件的模型)

检查 this在给定的复选框示例中使用模型并将组件处理到 ListView 中的文章

更新

我想你可以这样获取标签

((View)((ViewGroup)listview.getItemAtPosition(0)).getTag()).getTag();
or
((Button)l.getItemAtPosition(0)).getTag();

更新 2

假设这是你的适配器和数组列表对象

private List<Model> list_model = new ArrayList<Model>();

private ArrayAdapter<Model> modelAdapter;

你的模型类看起来像这样

private class Model{
private String text1 = "";
private boolean isChecked = false;

public Model(String text1){
this.text1 = text1;
isChecked = false;
}
}

你的观众

private static class ViewHolder{
TextView textView;
RadioButton radioBtn;
}

在构造函数中将列表模型传递给此 CustomAdapter 类

private List<Model> list;
private Context context;

public CustomAdapter(Context context, List<Model> list){
super(context,R.layout.list_layout,list);
this.list = list;
this.context = context;
}

现在在 getView()

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

if(convertView == null){
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.gcalendar_list_layout, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.textView = (TextView) view.findViewById(R.id.text1);
viewHolder.radioBtn = (RadioButton) view.findViewById(R.id.radioBtn);
viewHolder.radioBtn.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Model element = (Model) viewHolder.checkBox.getTag();
element.isChecked = buttonView.isChecked();
boolean isChecked = true;
for(int i=0;i<list.size();i++){
if(!list.get(i).isChecked){
list.get(i).isChecked=false; // more implement here or may be this work
break;
}
}
}
});
view.setTag(viewHolder);
viewHolder.radioBtn.setTag(list.get(position));
}else{
view = convertView;
((ViewHolder)view.getTag()).radioBtn.setTag(list.get(position));
}
ViewHolder holder = (ViewHolder) view.getTag();
holder.textView.setText(list.get(position).name);
holder.radioBtn.setChecked(list.get(position).isChecked);
return view;
}

关于Android - ListView 中的单选按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7740614/

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