getView没有在自定义适配器中调用

时间:2014-02-17 13:42:59

标签: java android android-listview adapter

我正在尝试在对话框中创建列表视图。但我的适配器中的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);

2 个答案:

答案 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();