Wählen Sie in der Listenansicht nur ein Optionsfeld aus

Ich habe die Frage immer wieder durchsucht. Es gibt viele Fragen, die ich in stackoverflow gefunden habe, aber ich habe keine Lösung gefunden. Hier ist mein Problem. Ich habe eine Liste mit Elementen in einem linearen Layout wie folgt:

Wenn der Bildschirm zuerst angezeigt wird, wird automatisch die letzte Radion-Schaltfläche ausgewählt. Wenn ich jedoch ein anderes Optionsfeld auswähle, befindet sich das letzte Optionsfeld bereits im ausgewählten Status. Ich möchte nur eine Optionsschaltfläche auswählen, aber zur gleichen Zeit, wenn der Bildschirm zuerst angezeigt wird, wird die letzte Optionsschaltfläche automatisch ausgewählt und die andere wird automatisch nicht ausgewählt. Wie kann ich das erreichen? Meine Adapterklasse ist:

public class AdapterPaymentMethod extends ArrayAdapter<PaymentData> {
    private Context context;
    private boolean userSelected = false;
    ViewHolder holder;

    public AdapterPaymentMethod(Context context, int resource,
            List<PaymentData> items) {
        super(context, resource, items);
        this.context = context;
    }

    /* private view holder class */
    private class ViewHolder {
        RadioButton radioBtn;
        Button btPaymentMethod;
        // ImageView ivLine;
    }

    public View getView(final int position, View convertView, ViewGroup parent) {
        holder = null;
        PaymentData rowItem = getItem(position);
        LayoutInflater mInflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (convertView == null) {
            convertView = mInflater.inflate(
                    com.android.paypal.homeactivity.R.layout.list_item, null);
            holder = new ViewHolder();
            holder.radioBtn = (RadioButton) convertView
                    .findViewById(com.android.paypal.homeactivity.R.id.rdb_payment_method);
            holder.btPaymentMethod = (Button) convertView
                    .findViewById(com.android.paypal.homeactivity.R.id.bt_item_event);
            convertView.setTag(holder);
        } else
            holder = (ViewHolder) convertView.getTag();

        if(position==getCount()-1 && userSelected==false){
            holder.radioBtn.setChecked(true);
        Log.d("if position", ""+position);
        }
        else{
            holder.radioBtn.setChecked(false);
            Log.d("else position", ""+position);
        }

        holder.radioBtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                userSelected=true;
                if(getCount()-1==position&&userSelected==true){         
                }
                else if(getCount()-2==position&&userSelected==true)
                {
                    holder.radioBtn.setChecked(true);
                }
            }
        });



        holder.radioBtn.setText(rowItem.getRdbText());
        holder.btPaymentMethod.setText(rowItem.getBtText());
        return convertView;
    }
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage