У меня есть следующий код, и я получаю исключение из null-указателя (см. Ниже). Я хочу получить имя пользователя, на которое указывает держатель вида. Я попытался даже получить его через view (v), но у меня получилось такое же исключение. Я не понимаю, почему значение равно null.Ссылка на нулевой указатель от адаптера setOnClickListener
public class ContactAdapter extends BaseAdapter {
private Context mContext;
public ContactAdapter(Context context) {
mContext = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_contact, null);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
ViewHolder vv = (ViewHolder)v.getTag();
TextView tv = (TextView) vv.userName.getText(); // Exception here - Line 120
}catch(Exception xx){
}
}
});
}
private class ViewHolder {
TextView userName;
ImageView add, delete, block,profImage;
public ViewHolder(View view) {
userName = (TextView) view.findViewById(R.id.user_name);
add = (ImageView) view.findViewById(R.id.add);
delete = (ImageView) view.findViewById(R.id.delete);
block = (ImageView) view.findViewById(R.id.block);
profImage = (ImageView) view.findViewById(R.id.profile_image);
}
}
Вот исключение: enter image description here
Я думаю, вы должны сначала SetTag. holder.delete.setTag (держатель); – Ani
В этом _ViewHolder vv = (ViewHolder) v.getTag(); _ u r get tag для кнопки удаления _v.getTag() _ и u не установил тег для кнопки удаления, так что получаю NPE. – Piyush