Как добавить один список выбора в пользовательский диалог в Android? - PullRequest
1 голос
/ 23 февраля 2012

Я хотел бы добавить один список выбора в настраиваемое диалоговое окно. Я пробовал его в разных типах, но я получаю сбой приложения с ошибкой только нулевого указателя. Я считаю, что это можно сделать только в формате AlertDialog.Builder только вмного примеров. Пожалуйста, помогите мне в этом с примером. Спасибо.

Ответы [ 3 ]

1 голос
/ 23 февраля 2012

Попробуйте это

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 голосов
/ 09 мая 2017

Шаги для создания диалогового окна настройки:

Создание файлов макета диалогового окна, например:

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

Создание пользовательского диалогового класса PriorityDlg, унаследованного от Dialog

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>
0 голосов
/ 23 февраля 2012

Приложение APIDemos имеет образец для этого. Вы можете воспользоваться помощью.

...