我有一个Listview
显示 Facebook 朋友图像和名称的图像。Button
右侧的每一行都有一个用于对特定的 Facebook 朋友进行一些操作Button
。根据某些条件可以有 3 个背景。这些如下,
1.如果未邀请该朋友,则将按钮背景设置为“Background1.png”。
2.如果邀请该朋友,则将按钮背景设置为“background2.png”。
3.如果该朋友已完成调查,请将按钮背景设置为“background3.png”。
我有一些给定的条件来检查朋友是否被邀请。还有调查的事情。附件截图显示了我实际需要的内容。
我的问题是按钮背景在滚动时会发生变化,因为Listview
重复使用了位置。我不能使用一般视图来显示它,因为 Facebook 朋友的数量会有所不同,并且会显示内存问题。以下是我到目前为止所尝试的。请指导我如何实现这一目标。
代码:
@Override
public View getView(int position, View convertView,
ViewGroup parent) {
View vi = convertView;
if (convertView == null)
vi = mInflater.inflate(R.layout.category_listview, null);
Facebook_FriendImage=(SmartImageView)vi.findViewById(R.id.category_image);
Facebook_FriendName = (TextView) vi.findViewById(R.id.category_name);
invite = (Button) vi.findViewById(R.id.invite);
invite.setTag(position);
if (position==2 || position==3) {
invite.setBackgroundResource(R.drawable.background1);
}
else if (position==5 || position==8) {
invite.setBackgroundResource(R.drawable.background2);
}
else {
invite.setBackgroundResource(R.drawable.background3);
}
//Snippet for loading FB Friend Image
int loader = R.drawable.no_image;
Facebook_FriendImage.setScaleType(ImageView.ScaleType.FIT_XY);
Facebook_FriendImage.setImageUrl(GlobalClass.FACEBOOK_FRIEND_IMAGE_URL.get(position), loader);
//Snippet for Loading FB Friend Name
String unicode=new String(GlobalClass.FACEBOOK_FRIEND_NAME.get(position));
Typeface font= Typeface.createFromAsset(getAssets(), "NotoSans-Bold.ttf");
Facebook_FriendName.setTypeface(font);
Facebook_FriendName.setText(unicode);
return vi;
}
我在这里给出的 if 条件只是为了简化。