listview中item中imageview的时候,如果复用convertview,就会出现图片跳动的问题,解决的办法在item中不使用imageview,而是在代码中添加进去:
布局:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout android:gravity="center_vertical"
android:orientation="vertical" android:id="@+id/list_item_layout"
android:background="@drawable/category_selector" android:layout_width="fill_parent"
android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout android:orientation="horizontal"
android:layout_height="fill_parent" android:layout_width="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_height="fill_parent" android:layout_width="wrap_content"
android:id="@+id/ll_book_image"
>
<RatingBar android:paddingTop="3dip" android:id="@+id/ratingbar"
style="?android:attr/ratingBarStyleSmall" android:layout_width="65.0dip"
android:stepSize="0.5" android:isIndicator="true"
android:layout_height="wrap_content" android:layout_gravity="center_vertical"
android:numStars="5" />
</LinearLayout>
<LinearLayout android:orientation="vertical"
android:paddingLeft="15dip" android:layout_height="fill_parent"
android:layout_width="fill_parent">
<TextView android:textColor="@android:color/black" android:textSize="20dp"
android:maxHeight="50dip" android:id="@+id/book_title"
android:textStyle="bold" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView android:textColor="@android:color/black" android:textSize="15dp"
android:id="@+id/book_description" android:layout_width="wrap_content"
android:maxHeight="60dip" android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
代码:
public View getView(int position, View convertView, ViewGroup parent) {
NewBook newbook = newbooks.get(position);
View view;
if(convertView==null){
view = View.inflate(NewBookActivity.this, R.layout.new_book_item, null);
}else{
view = convertView;
}
final ImageView iv = new ImageView(NewBookActivity.this);
//RatingBar rb = new RatingBar(NewBookActivity.this);
RatingBar rb = new RatingBar(NewBookActivity.this, null, android.R.attr.ratingBarStyleSmall);
rb.setMax(5);
rb.setProgress(4);
LinearLayout ll = (LinearLayout) view.findViewById(R.id.ll_book_image);
//清空ll的里面的view对象
ll.removeAllViews();
ll.addView(iv, new LayoutParams(60, 60));
ll.addView(rb,new LayoutParams(60, LayoutParams.WRAP_CONTENT));
TextView tv_title = (TextView) view.findViewById(R.id.book_title);
TextView tv_description = (TextView) view
.findViewById(R.id.book_description);
rb.setRating(4.0f);
tv_title.setText(newbook.getName());
tv_description.setText(newbook.getDescription());
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
boolean canloadicon = sp.getBoolean("canloadicon", false);
if(canloadicon){
LoadImageAsynTask task = new LoadImageAsynTask(new LoadImageAsynTaskCallback() {
public void beforeLoadImage() {
iv.setImageResource(R.drawable.book);
}
public void afterLoadImage(Bitmap bitmap) {
if(bitmap!=null){
iv.setImageBitmap(bitmap);
}else{
iv.setImageResource(R.drawable.book);
}
}
});
task.execute(newbook.getIconpath());
}else{
iv.setImageResource(R.drawable.book);
}
return view;
}