私はListView
独自のアダプターを持っています: CityZipCodesAdapter
. コンストラクターで、 、、および(が選択されているかどうか)List<CityZipCodesDataModel>
を保持する場所を指定します。これを書き込んでから、これを読みます。それはすべて機能します。String
String
boolen
RadioButton
SharedPreferences
public class CityZipCodesAdapter extends ArrayAdapter<CityZipCodesDataModel> {
private final List<CityZipCodesDataModel> list;
private final Activity context;
private RadioButton selectedRB;
private int selectedPosition = -1;
public CityZipCodesAdapter(Activity context,
List<CityZipCodesDataModel> list) {
super(context, R.layout.city_list_item, list);
this.context = context;
this.list = list;
}
static class ViewHolder {
protected TextView cityOrZipCode;
protected TextView listOfZipCodesInNear;
protected RadioButton radioBtn;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
ViewHolder viewHolder = null;
if (view == null) {
LayoutInflater inflator = context.getLayoutInflater();
view = inflator.inflate(R.layout.city_list_item, null);
viewHolder = new ViewHolder();
viewHolder.cityOrZipCode = (TextView) view.findViewById(R.id.cityOrZipCode);
viewHolder.listOfZipCodesInNear = (TextView) view.findViewById(R.id.listOfZipCodesInNear);
viewHolder.radioBtn = (RadioButton)view.findViewById(R.id.radioButton);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag() ;
}
viewHolder.radioBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(position != selectedPosition && selectedRB != null){
selectedRB.setChecked(false);
}
selectedPosition = position;
selectedRB = (RadioButton)v;
}
});
if(selectedPosition != position){
viewHolder.radioBtn.setChecked(false);
}else{
viewHolder.radioBtn.setChecked(true);
if(selectedRB != null && viewHolder.radioBtn != selectedRB){
selectedRB = viewHolder.radioBtn;
}
}
viewHolder.listOfZipCodesInNear.setText(list.get(position).getZipCodes());
viewHolder.cityOrZipCode.setText(list.get(position).getLocation());
viewHolder.radioBtn.setText(list.get(position).getLocation());
viewHolder.radioBtn.setChecked(list.get(position).isSelectedLocation());
return view;
}
}
問題は、アプリケーションをオンにすると、正しいものRadioButton
が選択されますが、アクティブではありません。正しく表示されているだけです。例えば、
×ストリング1
o 文字列 2
o String3
String2 をクリックすると (String1 が最初に選択されました)、String2 が選択されますが、String1 も選択されます。String1、次に String2 をクリックすると、選択は正しいです。
何が悪いのか分かりますか?助けてくれて本当にありがとうございます!