我正在开发一个应用程序,在这个应用程序中,我必须根据我在listview中解析XML响应后收到的值来显示评级。我使用自定义适配器实现了它,并在getView()方法中显示图像,如:
String rating = Constants.menuRatingList.get(position);
if (rating.equals("1")) {
rateImg1.setImageResource(R.drawable.stary);
}
问题是,当我向下滚动到最后一个项目并再次向上移动时,它正在重新绘制列表行。
有人请建议我停止重新绘制列表行并永久设置图像值。
答案 0 :(得分:0)
如何创建rateImg1变量? 也许你应该从传递给getView()方法的视图中获取它? 像这样:
public View getView(int position, View view, ViewGroup parent) {
if (view == null) {
view = LayoutInflater.from(ctx).inflate(R.layout.my_layout, parent, false);
}
((ImageView) view.findViewById(R.id.my_image)).setImageResource(R.drawable.some_drawable);
return view;
}
你也可以实现getViewTypeCount()和getItemViewType(),并在上面的方法中检查它们,如果已经设置了它,不要重绘相同的图像。