单选ListView自定义行布局

时间:2011-11-28 11:17:00

标签: android listview

我只想制作一个带有两个TextView的单选ListView(并排连续)。

实际上我想让它让用户根据尺寸价格值选择产品。 这些值显示在ListView中,这两个TextView代表Size-Price值。

问题在于我无法将其作为单个选项列表(也在其前面显示单选按钮)。下面是我正在使用的行布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:id="@+id/rowLayout" >
    <TextView
        android:id="@+id/tv_size"
        android:layout_width="180dp"
        android:layout_height="wrap_content"
        android:text="Size"
        android:textSize="15sp" />
    <TextView
        android:id="@+id/tv_price"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Price"
        android:textSize="15sp" />
   <RadioButton
        android:id="@+id/radioButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right" />
</LinearLayout>

请告诉我如何用Java编写代码。 如果可以使用simple_list_item_2布局那么怎么做?

2 个答案:

答案 0 :(得分:1)

我不确定我们可以在ListView中创建无线电组,我正在做的只是处理Java中的选择。 例如:

    @Override
    public View getView(int position, View view, ViewGroup viewGroup) {
        final ViewHolder holder;

        if (view == null) {
            holder = new ViewHolder();

            view = mInflater.inflate(R.layout.customer_invoice_row, null);

            holder.selectionRB = (RadioButton) view
                    .findViewById(R.id.selectionRB);
            holder.sizeTV = (TextView) view
                    .findViewById(R.id.sizeTV);
            holder.priceTV = (TextView) view
                    .findViewById(R.id.priceTV);

            holder.selectionRB.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    RadioButton rb = (RadioButton) v;
                    if (mSelectedRB != null) {
                        if (!rb.getTag().equals(mSelectedRB.getTag()))
                            mSelectedRB.setChecked(false);

                    }
                    mSelectedRB = rb;

                }
            });

            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }


        holder.position = position;

        holder.selectionRB.setTag(productObj);
        holder.sizeTV.setText(productObj.getSize());
        holder.priceTV.setText(productObj.getPrice());
        return view;
    }

持有人:[它可以是内部阶级]

class ViewHolder {
        int position;

        RadioButton selectionRB;
        TextView sizeTV;
        TextView priceTV;
    }

和mSelectedRB是您活动的全球成员。

答案 1 :(得分:0)

尝试 然后在适配器中声明RadioGroup对象 在getView()bindView()中使用RadioButtonsRadioGroup添加到RadioGroup.addView()