点击孩子的Listview的动态更新

时间:2017-01-25 10:54:36

标签: android android-layout listview

enter image description here

我使用ListView填充了一系列问题和答案 每个问题有6个选项(单选);如果我选择任何选项,则先前选择的选项应该无效。

@Override
    public View getView(int position, View convertView, ViewGroup viewGroup) {
        View views = convertView;
            views = inflater.inflate(R.layout.row_question_list, null);
            holder = new ViewHolders();
        holder.titleQuestion = (TextView)views.findViewById(R.id.tv_quetion_label);
        holder.c_option1 = (TextView)views.findViewById(R.id.question);

        holder.ibOption1= (ImageButton)views.findViewById(R.id.ibOption1);
        holder.ibOption2= (ImageButton)views.findViewById(R.id.ibOption2);
        holder.ibOption3= (ImageButton)views.findViewById(R.id.ibOption3);
        holder.ibOption4 = (ImageButton)views.findViewById(R.id.ibOption4);
        holder.ibOption5 = (ImageButton)views.findViewById(R.id.ibOption5);
        holder.ibOption6 = (ImageButton)views.findViewById(R.id.ibOption6);

  holder.ibOption6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               // Need to select current selection and invalide previous selection.
// For current selection
 ((ImageButton) view).setSelected(type);
            }
        });
return views;
}

如何获取其他选项的视图?

1 个答案:

答案 0 :(得分:0)

最简单和更好的解决方案是在row_question_list中使用Radio Group,里面有六个单选按钮。您可以进一步将父级广播组的方向更改为horizontal以获得上方视图。最终可以获得所选的单选按钮。

<RadioGroup>
   <RadioButton>
   <RadioButton>
   <RadioButton>
   <RadioButton>
   <RadioButton>
   <RadioButton>
</RadioGroup>

此外,您可以自定义背景并使用它们设置问题文本。

对于上面的视图,您可以使用state_selected = truestate_selected = false的图像绘制可绘制的内容,每次单击每个按钮后,您可以更改视图中所有其余按钮的按钮状态,甚至是可以改变背景。

holder.ibOption6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               holder.ibOption1.setBackgroundResource(your background);
               holder.ibOption2.setBackgroundResource(your background);
               holder.ibOption3.setBackgroundResource(your background);
               holder.ibOption4.setBackgroundResource(your background);
               holder.ibOption5.setBackgroundResource(your background);
            }
        });

,您必须为所有按钮设置此项。或者您可以尝试notifyDataSetChanged();.