カスタム リスト ビューを作成しました。arrayadapterをサブクラス化することにより、カスタムアダプターを使用して連絡先の詳細のリストを追加しました。リストで特定の連絡先を選択すると、選択した詳細を取得する必要があることを意味します。どうすればこれを達成できますか。ここで私のコーディング、
public class ContactListAdapter extends ArrayAdapter<ContactList> {
Context context;
int layoutResourceId;
ContactList objects[] = null;
View row;
public ContactListAdapter(Context context, int layoutResourceId, ContactList[] objects) {
super(context, layoutResourceId, objects);
// TODO Auto-generated constructor stub
this.context = context;
this.layoutResourceId = layoutResourceId;
this.objects = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
row = convertView;
final ContactListHolder holder;
if ( row == null ) {
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ContactListHolder();
holder.image = (ImageView) row.findViewById(R.id.contactImage);
holder.name = (TextView) row.findViewById(R.id.contactName);
holder.number = (TextView) row.findViewById(R.id.contactNumber);
holder.check = (CheckBox) row.findViewById(R.id.selectedContact);
holder.check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
}
});
row.setTag(holder);
holder.check.setTag(objects[position]);
} else {
holder = (ContactListHolder) row.getTag();
holder.check.setTag(objects[position]);
}
ContactList contact = objects[position];
if(contact.imageIcon != null) {
Bitmap imgBitmap = BitmapFactory.decodeByteArray(contact.imageIcon, 0, contact.imageIcon.length);
holder.image.setImageBitmap(imgBitmap);
} else {
holder.image.setImageResource(R.drawable.ic_launcher);
}
holder.name.setText(contact.name);
holder.number.setText(contact.number);
holder.check.setChecked(objects[position].isSelected());
return row;
}
static class ContactListHolder {
ImageView image;
TextView name;
TextView number;
CheckBox check;
}
}
マニンアクティビティでは、リストビューを次のように使用しました。
ContactList contactList[] = new ContactList[MyTrackList.size()];
for(int i=0;i<MyTrackList.size();i++) {
MyContact contact = MyTrackList.get(i);
contactList[i] = new ContactList(contact.getName(), contact.getNumber(), contact.getImage());
}
ContactListAdapter adapter = new ContactListAdapter(this, R.layout.manage_track_list_custom_view, contactList);
trackList = (ListView) findViewById(R.id.manage_track_listView);
trackList.setAdapter(adapter);
ここで連絡先リストは、多くのオブジェクトを持つクラスです。
私はこの方法で試しましたが、うまくいきません。私を導いてください。前もって感謝します。