Переключатели не отображаются, когда я использую setSingleChoiceItems AlertDialog.Builder с listadapter
Переключатели не отображаются, когда я использую setSingleChoiceItems из AlertDialog.Builder с listadapter. Радио кнопки отображаются, если я использую массив Charsequence[]. Пожалуйста, посмотрите на код, который я использую. Заранее спасибо!!
открытый класс ExampleApp extends Activity {
Context mContext;
ListAdapter myListAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
myListAdapter = new myListAdapter(mContext);
AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);
alt_bld.setTitle("Select any icon");
alt_bld.setSingleChoiceItems(myListAdapter, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), "Selected icon = "+imageName[item], Toast.LENGTH_SHORT).show();
}
});
AlertDialog alert = alt_bld.create();
alert.show();
}
private class myListAdapter extends BaseAdapter{
public myListAdapter(Context mContext){
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return imageName.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder myViewHolder;
if(convertView == null){
convertView = LayoutInflater.from(mContext).inflate(R.layout.listadapterview, null);
myViewHolder = new ViewHolder();
myViewHolder.txt_icon_name = (CheckedTextView) convertView.findViewById(R.id.CheckedTextView01);
convertView.setTag(myViewHolder);
}
else{
myViewHolder = (ViewHolder) convertView.getTag();
}
myViewHolder.txt_icon_name.setText(imageName[position]);
return convertView;
}
class ViewHolder {
CheckedTextView txt_icon_name;
}
}
String[] imageName = {"icon1", "icon2", "icon3"};
} // XML для просмотра списков
2 ответа
У меня была похожая проблема. Хотя я использовал CheckedTextView
кнопка радио не появлялась.
Решением было добавить следующее к CheckedTextView
элемент в файле макета:
android:checkMark="?android:attr/listChoiceIndicatorSingle"
Вот мой файл "dialog_list_item.xml":
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_list_item_title"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
>
</CheckedTextView>
Вот код для создания адаптера списка:
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
this.getContext(), R.layout.dialog_list_item,
cursor,
new String[]{"title"},
new int[]{R.id.dialog_list_item_title}
);
Я чертовски погуглил, чтобы найти ответ, но в конце концов нашел ответ прямо в SDK:
$android_sdk_home/platforms/android-x.x/data/res/layout/simple_list_item_single_choice.xml
Иногда исходный код лучше, чем любой поиск в Google.;)
Предположительно, R.layout.listadapterview
это не CheckedTextView
что и нужно для singleChoice
работать.