我正在尝试在对话框中创建列表视图。但我的适配器中的getView函数永远不会被调用。有什么想法吗?
适配器:
public class DialogAdapter extends BaseAdapter{
HashMap<String, String> extraInfo;
private String[] mKeys;
Context mContext;
int res;
LayoutInflater vi;
public DialogAdapter(){
}
public DialogAdapter(Context context,HashMap<String, String> extraInfo) {
this.extraInfo = extraInfo;
mKeys = this.extraInfo.keySet().toArray(new String[this.extraInfo.size()]);
mContext = context;
vi = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return extraInfo.size();
}
@Override
public Object getItem(int position) {
return extraInfo.get(mKeys[position]);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Textholder textholder = null;
System.out.println("Test");
if(convertView ==null){
convertView = vi.inflate(R.layout.cust_dialog_item, parent, false);
textholder = new Textholder();
textholder.info = (TextView)convertView.findViewById(R.id.textProfile);
textholder.value = (TextView)convertView.findViewById(R.id.valueProfile);
convertView.setTag(textholder);
}
else{
textholder = (Textholder)convertView.getTag();
}
textholder.info.setText(mKeys[position]);
textholder.value.setText(getItem(position).toString());
return convertView;
}
private static class Textholder {
TextView info;
TextView value;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
}
设置适配器并进行对话:
DialogAdapter dAdapter = new DialogAdapter(x,extraInfo);
AlertDialog dialog = new AlertDialog.Builder(getActivity())
.setView(getActivity().getLayoutInflater().inflate(R.layout.custdialog, null))
.create();
View x = inflater.inflate(R.layout.custdialog, container, false);
ListView custListDialog = (ListView)x.findViewById(android.R.id.list);
dialog.show();
custListDialog.setAdapter(dAdapter);
答案 0 :(得分:3)
你要两次给布局充气。对话框中的列表视图与您将适配器设置为不同。
要修复它,例如变化
AlertDialog dialog = new AlertDialog.Builder(getActivity())
.setView(getActivity().getLayoutInflater().inflate(R.layout.custdialog, null))
.create();
View x = inflater.inflate(R.layout.custdialog, container, false);
到
View x = inflater.inflate(R.layout.custdialog, container, false);
AlertDialog dialog = new AlertDialog.Builder(getActivity())
.setView(x)
.create();
答案 1 :(得分:1)
试试这个
custListDialog.setAdapter(dAdapter);
dialog.show();