カスタム アダプター行内に既にあるリストビューを埋めるにはどうすればよいですか。これは正しい方法ですか?
組織オブジェクトがあります。そして、この組織はより多くの連絡先を持つことができます。
たとえば、上部に組織の名前があり、その下に連絡先の名前があるレイアウトを作成したいと思います。
組織オブジェクトを取得してカスタム アダプター内に配置し、名前を表示することは問題ありません。しかし、その行レイアウトでリストビューを埋めるにはどうすればよいですか? カスタム アダプター内の新しい ArrayAdapter コンストラクターのコンテキスト パラメーターを実際には取得しません。何が必要ですか?
public class ContactAdapter extends ArrayAdapter<Organization> {
Context context;
int layoutResourceId;
ArrayList<Organization> data = null;
public ContactAdapter(Context context, int layoutResourceId, ArrayList<Organization> data) {
super(context, layoutResourceId, data);
this.context = context;
this.layoutResourceId = layoutResourceId;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
OrganizationHolder holder = null;
if (row == null) {
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent,false);
holder = new OrganizationHolder();
holder.tvOrgName = (TextView)row.findViewById(R.id.tvOrgName);
holder.LvContacts = (ListView)row.findViewById(R.id.LvContacts);
row.setTag(holder);
} else {
holder = (OrganizationHolder) row.getTag();
}
Organization org = data.get(position);
ArrayList<String> contacts = new ArrayList<String>();
for (Contact c : org.getContacts()) {
contacts.add(c.getName());
}
Log.i("List",""+contacts);
ArrayAdapter<String> contactsadapter = new ArrayAdapter<String>(??,android.R.layout.simple_list_item_1,contacts);
holder.LvContacts.setAdapter(contactsadapter);
holder.tvOrgName.setText(org.getName());
return row;
}
static class OrganizationHolder {
TextView tvOrgName;
ListView LvContacts;
Button btnDetails;
}