我有一個場景,我們應該在listview中有一個單選模式單選按鈕。當我點擊單選按鈕時,它應該啓用狀態。當我點擊整個項目時,它應該重定向到新的活動。我refered以下鏈接Android - 單選按鈕在listView?
我可以找出多種選擇模式的方式。但不適用於單一選擇模式。對此有何想法?
???編輯??? 我如何才能在列表視圖中找到物品的相應標籤的標籤
我有一個場景,我們應該在listview中有一個單選模式單選按鈕。當我點擊單選按鈕時,它應該啓用狀態。當我點擊整個項目時,它應該重定向到新的活動。我refered以下鏈接Android - 單選按鈕在listView?
我可以找出多種選擇模式的方式。但不適用於單一選擇模式。對此有何想法?
???編輯??? 我如何才能在列表視圖中找到物品的相應標籤的標籤
您可以採用一種方法,但我不知道它是否完美。
跟蹤當您點擊另一個單選按鈕時,現在檢查單選按鈕的列表視圖的位置ID,然後執行setOnCheckedChangeListener(listener)
並檢查已檢查位置,並取消選中該單選按鈕。
您可以存儲單選按鈕的狀態進入自定義模型(模型包含了像TextView的,ImageView的,單選按鈕等的列表視圖單行的控件),將其添加到列表視圖
檢查this文章使用模型和處理組件爲特定的複選框的例子在此列表視圖
更新
我認爲你可以獲取標記像這樣
((View)((ViewGroup)listview.getItemAtPosition(0)).getTag()).getTag();
or
((Button)l.getItemAtPosition(0)).getTag();
更新2
想這是你的適配器和ArrayList對象
private List<Model> list_model = new ArrayList<Model>();
private ArrayAdapter<Model> modelAdapter;
你Model類這個樣子的
private class Model{
private String text1 = "";
private boolean isChecked = false;
public Model(String text1){
this.text1 = text1;
isChecked = false;
}
}
您viewholder
private static class ViewHolder{
TextView textView;
RadioButton radioBtn;
}
現在通過的ListModel這個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;
}
當只有一個選擇按鈕,窗口小部件複選框。你必須在你的列表適配器中做一些調整 - 你需要在配置列表項視圖的時候註冊自定義事件監聽器 ,並且要記住這些視圖被重用 (或者如果你不關心創建新的視圖性能)
好的。那麼我可以自定義複選框圖像。我必須改變複選框的主題。 – Praveen
+1。請在你的代碼中提倡。我無法正確地得到你。 – Praveen
檢查更新回答後 – Pratik
但它不工作。它不禁用處於選定狀態的前一個單選按鈕。 – Praveen