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

4bbkushb  于 2023-04-10  发布在  Android
关注(0)|答案(3)|浏览(105)

我想添加一个单一的选择列表到自定义对话框我已经尝试过它在不同的类型,但我得到的应用程序崩溃与一个空指针错误只.我发现它只能在AlertDialog中完成.生成器格式只有在许多例子.请帮助我在这与example.Thanks.

f8rj6qna

f8rj6qna1#

试试这个

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();
jvlzgdj9

jvlzgdj92#

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

tvokkenx

tvokkenx3#

创建自定义对话框的步骤:
创建对话框布局文件,如:

<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>

相关问题