您的位置:首页 > Web前端

4解决图片乱跳的问题,preferenceactivity.

2015-10-07 14:45 323 查看
设置界面
listview中图片异步加载时,图片乱跳错位的现象
原因:这是由于在代码中复用了convertview,同时也复用了convertview中的bitmap,
解决:
①不用convertview缓存,但程序的效率打折扣
②可以用convertview缓存,在xml中不配置ImageView,在代码中手动添加
③自定义一个ImageView,同时具有异步加载的功能



<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/list_item_layout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/category_selector" android:gravity="center_vertical" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <LinearLayout android:id="@+id/ll_book_image" android:layout_width="wrap_content" android:layout_height="fill_parent" android:orientation="vertical" > <RatingBar android:id="@+id/ratingbar" style="?android:attr/ratingBarStyleSmall" android:layout_width="65.0dip" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:isIndicator="true" android:numStars="5" android:paddingTop="3dip" android:stepSize="0.5" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:paddingLeft="15dip" > <TextView android:id="@+id/book_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxHeight="50dip" android:textColor="@android:color/black" android:textSize="20dp" android:textStyle="bold" /> <TextView android:id="@+id/book_description" android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxHeight="60dip" android:textColor="@android:color/black" android:textSize="15dp" /> </LinearLayout> </LinearLayout></LinearLayout>
考虑如果不设置ratingbar样式有影响吗?

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; } }

SharedpreferenceActivity
设置界面

来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: