Ниже приведен код для моего адаптера пользовательского списка для списка. Адаптер отлично работает, если я прокомментирую токен «не нуль» в моем коде, который без моего владельца. Может ли кто-нибудь помочь мне с проблемой, которую я здесь?Viewholder не работает для пользовательского адаптера
public View getView(int i, View view, ViewGroup viewGroup) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.eachlist, viewGroup, false);
if (this.subject==null && this.percentage==null && this.happen==null && this.missed==null) {
Log.d("null cha","error");
subject = (TextView) row.findViewById(R.id.subjectname);
happen=(TextView)row.findViewById(R.id.attended);
missed=(TextView)row.findViewById(R.id.missed);
percentage=(TextView)row.findViewById(R.id.Attendance);
new viewholder(subject,happen,missed,percentage);
}
else {
subject=viewholder.subject;
happen=viewholder.happen;
missed=viewholder.missed;
percentage=viewholder.percentage;
}
subject.setText(list.get(i).subject);
happen.setText(String.valueOf(list.get(i).happened));
missed.setText(String.valueOf(list.get(i).missed));
percentage.setText(String.valueOf(list.get(i).percentage));
return row;
}
static class viewholder{
static TextView subject;
static TextView happen;
static TextView missed;
static TextView percentage;
viewholder(TextView subject,TextView happen,TextView missed,TextView percentage){
this.subject=subject;
this.happen=happen;
this.missed=missed;
this.percentage=percentage;
}
}
Вы делаете это неправильно. Проверьте этот учебник http://www.javacodegeeks.com/2013/09/android-viewholder-pattern-example.html –
Вы уверены, что делаете это правильно? Весь смысл «держателя вида» заключается в том, чтобы вы не раздували пользовательский интерфейс и не проверяли его, если он уже был кэширован для вас. Вы делаете это, устанавливая тег в своем представлении и проверяя, является ли этот тег экземпляром вашего класса ViewHolder. См. Здесь подробный пример http://www.javacodegeeks.com/2013/09/android-viewholder-pattern-example.html и убедитесь, что вы понимаете бит с помощью .getTag() и .setTag(). – kha