2014-02-17 41 views
1

我想在对话框中创建一个listview。但我的适配器中的getView函数永远不会被调用。有任何想法吗?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); 

回答

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(); 
+0

感谢您的帮助。现在正在工作。我稍后会接受你的回答。 – David

1

试试这个

custListDialog.setAdapter(dAdapter); 
dialog.show(); 
+0

试过,但它只是显示一个空的对话框。 – David

相关问题