在我的应用程序中,我有一个类扩展对话框片段。该类显示正常的对话框(不是Alert对话框)。显示列表视图的适配器
1.在对话框中显示列表视图。列表视图包含2个文本视图,两个都由2个字符串数组填充。我很困惑除了基座适配器以外使用哪个适配器
2.如何膨胀对话框的布局。 setView方法仅适用于警报对话框
在我的应用程序中,我有一个类扩展对话框片段。该类显示正常的对话框(不是Alert对话框)。显示列表视图的适配器
1.在对话框中显示列表视图。列表视图包含2个文本视图,两个都由2个字符串数组填充。我很困惑除了基座适配器以外使用哪个适配器
2.如何膨胀对话框的布局。 setView方法仅适用于警报对话框
如果要使用适配器显示对话框内的数据,可以使用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;
}
};
使用除基地适配器
=>没有限制的适配器。您可以根据您的要求使用和定制任何适配器。例如,您可以使用ArrayAdapter
ArrayAdapter<JSONObject>
或ArrayAdapter<String>
。
如何膨胀对话框的布局。可用的setView方法只
=>检查:How can inflate a layout containing listview in a alert 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;
}
}
但我没有使用警报对话框,已经实现了对话框。是否需要使用基础适配器...这是没有自定义适配器的任何其他方式 – user1526671