1
Picassoを使用してFirebase Storageから取得した画像のリストがあります。画像は完全に読み込まれます。しかし、私がスクロールするたびに、読み込まれたイメージが取り除かれ、スクロールバックすると、ユーザーの目には本当に面倒です。 どのようにすべての画像が一度だけ読み込まれ、読み込まれた画像はユーザがスクロールしてもそのままになるように解決できます。ピカソを使用して読み込まれた画像は、スクロール時に削除され、読み込みを再開します。
これはXMLの私のListViewです:
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lv"
android:isScrollContainer="false"
android:focusable="true"
android:layout_weight="1"
android:layout_marginTop="3dp"
android:scrollingCache="true"
/>
これはListItemの内部ImageViewのです:
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/itemImage"
android:background="@color/white"
android:scaleType="fitCenter"
android:layout_centerVertical="true"
android:layout_weight="0"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:padding="5dp"
android:src="@drawable/white_filling"
>
</ImageView>
そして、これは私のCustomAdapterです:
public class Firebase_CustomAdapter extends BaseAdapter {
public static Context c;
ArrayList<Firebase_Holder> spacecrafts;
public Firebase_CustomAdapter(Context c, ArrayList<Firebase_Holder> spacecrafts) {
this.c = c;
this.spacecrafts = spacecrafts;
}
@Override
public int getCount() {
return spacecrafts.size();
}
@Override
public Object getItem(int position) {
return spacecrafts.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if(convertView==null)
{
convertView= LayoutInflater.from(c).inflate(R.layout.list_item_books,parent,false);
ViewHolder viewHolder = new ViewHolder();
viewHolder.itemImage = (MyImageView) convertView.findViewById(R.id.itemImage);
}
final MyImageView itemImage= (MyImageView) convertView.findViewById(R.id.itemImage);
final Firebase_Holder s= (Firebase_Holder) this.getItem(position);
StorageReference mStorage = FirebaseStorage.getInstance().getReference();
final StorageReference Adv_mStorge = mStorage.child("Items_pictures").child(s.getname().toLowerCase() + ".jpg");
Adv_mStorge.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Picasso.with(c).load(uri)
.into(itemImage);
}
});
return convertView;
}
public class ViewHolder {
MyImageView itemImage;
}
}
ユニバーサル画像ローダーを試してみてください。 https://github.com/nostra13/Android-Universal-Image-Loader – theapache64