0

在我的应用程序中,我有一个类扩展对话框片段。该类显示正常对话框(不是警报对话框)。

1.在对话框中显示一个列表视图。列表视图包含 2 个文本视图,两者都由 2 个字符串数组填充。除了基本适配器之外,我对使用哪个适配器感到困惑

2.如何为对话框充气布局。setView 方法是否仅适用于警报对话框

4

3 回答 3

1

在 Dialog 中使用布局的唯一方法是对其进行子类化:

class MyDialog extends Dialog{
public MyDialog(Context context) {
    super(context);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dialog);

    String[] arr1 = new String[]{"title1", "title2", "title3"};
    String[] arr2 = new String[]{"content1", "content2", "content3"};

    ListView  list = (ListView)findViewById(R.id.list);
    list.setAdapter(new MyAdapter(arr1, arr2));
}

其中 R.layout.dialog 是定义 listView 的布局,我们将设置一个自定义适配器,膨胀包含两个字符串的布局。

private final class MyAdapter extends BaseAdapter{
    private String[] mArray1;
    private String[] mArray2;

    public MyAdapter(String[] arr1, String[] arr2) {
        mArray1 = arr1;
        mArray2 = arr2;
    }

    public int getCount() { return mArray1.length; }
    public Object getItem(int position) { return mArray1[position]; }
    public long getItemId(int position) { return 0; }

    public View getView(int position, View convertView, ViewGroup parent) {
        String str1 = mArray1[position];
        String str2 = mArray2[position];
        if(convertView==null){
            LayoutInflater li = getLayoutInflater();
            convertView = li.inflate(R.layout.my_list_cell, null);
        }

        TextView text1 = (TextView)convertView.findViewById(R.id.text1);
        text1.setText(str1);

        TextView text2 = (TextView)convertView.findViewById(R.id.text2);
        text1.setText(str2);

        return convertView;
    }
}
于 2013-02-04T09:43:51.057 回答
0

如果要使用适配器在对话框中显示数据,可以使用 ListAdapter。它可能是这样的:

    ListAdapter adapter = new ArrayAdapter<String>(context, android.R.layout.select_dialog_item, android.R.id.text1, items) {
      public View getView(int position, View convertView, ViewGroup parent) {

      // Do something here

        return view;
      }
    };
于 2013-02-04T09:34:46.290 回答
0

使用哪个适配器而不是基本适配器

=> 没有限制。您可以根据需要使用和自定义任何适配器。例如,您可以使用ArrayAdapteregArrayAdapter<JSONObject>ArrayAdapter<String>.

如何为对话框膨胀布局。setView 方法是否仅可用

=> 检查:如何在警报对话框中扩展包含列表视图的布局?

于 2013-02-04T09:35:42.977 回答