7

カスタム アダプター行内に既にあるリストビューを埋めるにはどうすればよいですか。これは正しい方法ですか?

組織オブジェクトがあります。そして、この組織はより多くの連絡先を持つことができます。

たとえば、上部に組織の名前があり、その下に連絡先の名前があるレイアウトを作成したいと思います。

組織オブジェクトを取得してカスタム アダプター内に配置し、名前を表示することは問題ありません。しかし、その行レイアウトでリストビューを埋めるにはどうすればよいですか? カスタム アダプター内の新しい 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;
}
4

2 に答える 2

1

((Activity)context) を使用しました。それは今働いています!

それが何を意味するのか、何をするのかはまだわかりません。しかし、今のところ機能していることを嬉しく思います。これが正しい方法なのかどうか、今でも疑問に思っています。

于 2013-07-16T14:35:09.187 に答える