У меня есть gridview, который заполняет информацию контакта (изображение, имя и номер телефона) с помощью пользовательского адаптера. При щелчке по определенному элементу я хочу получить информацию контакта (информация об изображении, имя и номер телефона). Я знаю, что мне нужно использовать setTag() и getTag(), но я не могу понять, как это сделать. Вот мой код .. методonItemClick - Получить элемент в позиции из GridView с помощью CustomAdapter
GetView заказного адаптера
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ContactViewHolder contactViewHolder;
if (convertView == null) {
LayoutInflater li = getLayoutInflater();
convertView = li.inflate(R.layout.activity_grid_one_item, null);
contactViewHolder = new ContactViewHolder();
contactViewHolder.imgContact = (ImageView) convertView
.findViewById(R.id.imgViewContactImage);
contactViewHolder.txtViewContactName = (TextView) convertView
.findViewById(R.id.txtViewContactName);
contactViewHolder.txtViewPhoneNumber = (TextView) convertView
.findViewById(R.id.txtViewPhoneNumber);
convertView.setTag(contactViewHolder);
} else {
contactViewHolder = (ContactViewHolder) convertView.getTag();
}
curObj.moveToPosition(position);
String name = curObj.getString(curObj.getColumnIndex("name"));
if (name != null)
contactViewHolder.txtViewContactName.setText(name);
else
contactViewHolder.txtViewContactName.setText("Unknown");
String phoneNumber = curObj.getString(curObj.getColumnIndex("number"));
if (phoneNumber != null)
contactViewHolder.txtViewPhoneNumber.setText(phoneNumber);
else
contactViewHolder.txtViewPhoneNumber.setText("Unknown");
String image = curObj.getString(curObj.getColumnIndex("image"));
if(image.equalsIgnoreCase("R.drawable.addcontactsmall2"))
contactViewHolder.imgContact.setImageResource(R.drawable.addcontactsmall2);
else
{
Uri uri = Uri.parse(image);
contactViewHolder.imgContact.setImageURI(uri);
}
return convertView;
}
public class ContactViewHolder {
ImageView imgContact;
TextView txtViewContactName;
TextView txtViewPhoneNumber;
}
onItemClick
метод
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
View view = (View) arg1.getTag(arg2);
TextView txtPhoneNumber = (TextView) view.findViewById(R.id.txtview_addcontact_phonenumber);
System.out.println(txtPhoneNumber.getText().toString());
}
я знаю, что приведенный выше код не работает (и это не сработало, а , как и ожидалось, я получаю исключение с нулевым указателем), поэтому, если кто-нибудь может направить меня на то, как это сделать, это будет очень полезно.
Ок .. я попробую .. –
Спасибо много он работал ... Просто небольшое изменение в phNumber = PHONENUMBER, измененные в contactViewHolder.phNumber = PHONENUMBER; –
Я думаю, что это не очень хороший способ справиться с этой задачей. Это осложнило бы, когда несколько парм и массивов удерживали эти значения –