更新时间:2021-11-04 21:43:55
您getView()是一个有点奇怪。字段的TextView
您持有人永远不会初始化?
Your getView() is a bit strange. The field textview
of your holder is never initialized ?
持有人的效用是限制使用的方法 findViewById
。
The usefulness of the holder is to limit the use of the method findViewById
.
下面是我会用骨架:
static class ViewHolder {
public TextView textview;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
// reuse views
if (rowView == null) {
LayoutInflater inflater = context.getLayoutInflater();
rowView = inflater.inflate(R.layout.listitem, null);
// configure view holder
ViewHolder viewHolder = new ViewHolder();
viewHolder.textview= (TextView) rowView.findViewById(R.id.textview);
rowView.setTag(viewHolder);
}
else {
ViewHolder holder = (ViewHolder) rowView.getTag();
}
// fill data
holder.textview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final int position = listView.getPositionForView(v);
//position is always -1 after configuration change
Log.d(TAG, "Like button pushed at position: " + position);
}
});
return rowView;
}
}
希望它解决您的问题!
Hopefully it solve your problem !
有一个愉快的一天!