I have a problem when "caching" my convertView
in my Custom Adapters getView
method. When using "caching" like
if (convertView == null) ...
my verifiedView
is sometimes displayed even when the user is not verified. When removing the if construct and just use row = convertView;
everything works as expected. Any idea how to fix this?
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(resource, parent, false);
} else {
row = convertView;
}
UserProfile user = users.get(position);
// get views
TextView usernameView = (TextView) row.findViewById(R.id.username);
ImageView avatarView = (ImageView) row.findViewById(R.id.avatar);
ImageView verifiedView = (ImageView) row.findViewById(R.id.verified);
// check if user has an custom avatar
if (!user.getAvatar().isEmpty()) {
// now check if we already downloaded the avatar
InputStream is = AvatarHandler.getAvatar(this.context, user.getID());
if (is != null) {
Bitmap bmp = BitmapFactory.decodeStream(is);
System.out.println("Avatar already downloaded.");
avatarView.setImageBitmap(bmp);
}
}
else {
// set default avatar
avatarView.setImageResource(R.drawable.avatar);
}
// set username
usernameView.setText(user.getName());
// set verified
if (user.isVerified())
verifiedView.setVisibility(View.VISIBLE);
return row;
}
You should hide verifiedView
when the user is not verified:
// set verified
if (user.isVerified()) {
verifiedView.setVisibility(View.VISIBLE);
} else {
verifiedView.setVisibility(View.GONE);
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.