簡體   English   中英

當我將AlertDialog.Builder的setSingleChoiceItems與listadapter一起使用時,單選按鈕不顯示

[英]Radio buttons doesn't show up when I use setSingleChoiceItems of AlertDialog.Builder with listadapter

當我將AlertDialog.Builder的setSingleChoiceItems與listadapter一起使用時,單選按鈕不顯示。 如果我使用Charsequence []數組,則會顯示單選按鈕。 請查看我使用的代碼。 提前致謝!!

公共類ExampleApp擴展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用於listadapter視圖

我有一個類似的問題。 即使我使用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正常工作所需要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM