如何在android中的自定义对话框中添加单选列表?

问题描述 投票:0回答:3

我想在自定义对话框中添加一个选择列表我已经在不同类型中尝试过,但我的应用程序仅因空指针错误而崩溃。我发现它只能在许多示例中以 AlertDialog.Builder 格式完成.Kindly help me on this with a example.Thanks.

android listview radio-button radiobuttonlist
3个回答
1
投票

试试这个

String x_id;

final String[] arrayOfStrings = first.toArray(new String[first.size()]);

Dialog dialog = new Dialog(Conf_game.this);
dialog.setContentView(R.layout.dialogs);
dialog.setTitle("SELECT Item ");        

final ListView lst = (ListView) dialog.findViewById(R.id.dialog_list);

lst.setAdapter(new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_checked, android.R.id.text1,
        arrayOfStrings));

lst.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1,
            int item, long arg3) {

        coursetext.setText(arrayOfStrings[item]);

        x_id = arrayOfStrings [item];

        System.out.println(" Value of ID OF ABC OF"
                + arrayOfStrings[item] + "    IS    " + C_id);
        dialog.dismiss();
    }
});

dialog.show();

0
投票

APIDemos 应用程序有一个示例。你可以从中得到帮助。


0
投票

创建自定义对话框的步骤:

创建对话框布局文件,如:

<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android" 
      android:layout_width = "wrap_content" 
      android:layout_height = "wrap_content"> 
      <!-- The Title Bar -->
      <LinearLayout 
          android:id = "@+id/dlg_priority_titlebar" 
          android:orientation = "horizontal" 
          android:layout_width = "fill_parent" 
          android:layout_height = "wrap_content" 
          android:layout_alignParentTop = "true"> 
          <ImageView 
            android:src = "@drawable/image" 
            android:layout_width = "wrap_content" 
            android:layout_height = "wrap_content" 
            android:layout_margin = "5dip" /> 
        <TextView 
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content" 
            android:text = "Select Task Priority" 
            android:layout_gravity = "center_vertical" /> 
      </LinearLayout> 
      <ListView 
          android:id = "@+id/dlg_priority_lvw" 
          android:layout_width = "wrap_content" 
          android:layout_height = "wrap_content" 
          android:layout_below = "@+id/dlg_priority_titlebar" 
          android:background = "@drawable/layout_home_bg"> 
      </ListView>      
</RelativeLayout>

因为ListView中的布局是自定义的,所以要为ListView创建一个布局文件:

<LinearLayout xmlns: android = "http://schemas.android.com/apk/res/android" 
    android:orientation = "horizontal" 
    android:layout_width = "fill_parent" 
    android:layout_height = "fill_parent"> 

<ImageView 
      android:id = "@+id/list_priority_img" 
      android:layout_width = "wrap_content" 
      android:layout_height = "wrap_content" 
      android:layout_gravity = "center_vertical" 
      android:layout_margin = "5dip" /> 
<TextView 
     android:id = "@+id/list_priority_value" 
     android:layout_width = "wrap_content" 
     android:layout_height = "wrap_content" 
     android:layout_gravity = "center_vertical" 
     android:textsize = "28dip" 
     android:textColor = "@drawable/ black" /> 
</LinearLayout>

创建一个继承自Dialog的自定义Dialog类PriorityDlg

public class PriorityDlg extends Dialog {

private Context context;
private ListView dlg_priority_lvw = null;
public PriorityDlg(Context context) {
    super(context);
    this.context = context;
    // TODO Auto-generated constructor stub
}
public PriorityDlg(Context context, int theme) {
    super(context, theme);
    this.context = context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.dlg_priority);
    dlg_priority_lvw = (ListView) findViewById(R.id.dlg_priority_lvw);
    // ListView
    SimpleAdapter adapter = new SimpleAdapter(context, getPriorityList(),
            R.layout.lvw_priority, new String[] { "list_priority_img",
                    "list_priority_value" }, new int[] {
                    R.id.list_priority_img, R.id.list_priority_value });
    dlg_priority_lvw.setAdapter(adapter);
    //ListView
    dlg_priority_lvw
            .setOnItemClickListener(new AdapterView.OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {

                }
            });
}
private List<HashMap<String, Object>> getPriorityList() {
    List<HashMap<String, Object>> priorityList = new ArrayList<HashMap<String, Object>>();
    HashMap<String, Object> map1 = new HashMap<String, Object>();
    map1.put("list_priority_img", R.drawable.priority_not_important);
    map1.put("list_priority_value", context.getResources().getString(
            R.string.dlg_priority_not_important));
    priorityList.add(map1);
    HashMap<String, Object> map2 = new HashMap<String, Object>();
    map2.put("list_priority_img", R.drawable.priority_general);
    map2.put("list_priority_value", context.getResources().getString(
            R.string.dlg_priority_general));
    priorityList.add(map2);
    HashMap<String, Object> map3 = new HashMap<String, Object>();
    map3.put("list_priority_img", R.drawable.priority_important);
    map3.put("list_priority_value", context.getResources().getString(
            R.string.dlg_priority_important));
    priorityList.add(map3);
    HashMap<String, Object> map4 = new HashMap<String, Object>();
    map4.put("list_priority_img", R.drawable.priority_very_important);
    map4.put("list_priority_value", context.getResources().getString(
            R.string.dlg_priority_very_important));
    priorityList.add(map4);

    return priorityList;
}
}

创建自定义对话框

PriorityDlg dlg = new PriorityDlg (SimpleTaskActivity.this, R.style.dlg_priority); 
dlg.show();

其中R.style.dlg_priority设置对话框使用的样式文件,只是让对话框去掉标题栏,当然你可以代码来完成这个效果:

<? Xml version = "1.0" encoding = "utf-8"?> 
<resources> 
    <style name="dlg_priority" parent="@android:Theme.Dialog"> 
        <item name = "android: windowNoTitle"> true </ item> 
    </ style> 
</ resources>
© www.soinside.com 2019 - 2024. All rights reserved.