Ich habe andere ähnliche Themen gelesen und ich habe alle Tipps, denke ich, aber ich sehe Verzögerungen beim Scrollen. Ich verstehe nicht, was ich tun muss, um es zu verhindern. Ich denke, dass mir etwas fehlt, da das ListView nicht gut scrollt.Android: Wie optimiert man ListView?
Hier ist mein Code. Ich verwende Picasso, um Bilder zu laden. Was mache ich hier falsch?
public class CustomAdapter extends ArrayAdapter<CustomObjects>
{
Context context;
int layoutResourceId;
List<CustomObjects> data = null;
public CustomAdapter(Context context, int layoutResourceId, List<Objects> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
public View getView(int position, View convertView, ViewGroup parent)
{
final ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(getContext()).inflate(layoutResourceId, parent, false);
holder.img = (ImageView) convertView.findViewById(R.id.objectImage);
holder.title = (TextView) convertView.findViewById(R.id.title);
holder.field2 = (TextView) convertView.findViewById(R.id.field2);
holder.field3 = (TextView) convertView.findViewById(R.id.field3);
holder.field4 = (TextView) convertView.findViewById(R.id.field4);
holder.field5 = (TextView) convertView.findViewById(R.id.field5);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
CustomObjects customObject = getItem(position);
Picasso.with(getActivity())
.load(customObject.getImgUrl())
.tag("image")
.into(holder.img);
holder.title.setText(customObject.getName());
holder.field2.setText(customObject.getField2());
holder.field3.setText(customObject.getField3());
holder.field4.setText(customObject.getField4());
holder.field5.setText(customObject.getField5());
return convertView;
}
}
ViewHolder:
private static class ViewHolder {
TextView title;
ImageView img;
TextView field1;
TextView field2;
TextView field3;
TextView field4;
}
i-Upload Bild stoppen auch beim Scrollen:
//Its my ListView (objectsList)
objectsList.setOnScrollListener(new SampleScrollListener(getActivity()));
public class SampleScrollListener implements AbsListView.OnScrollListener {
private final Context context;
public SampleScrollListener(Context context) {
this.context = context;
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
final Picasso picasso = Picasso.with(context);
if (scrollState == SCROLL_STATE_IDLE || scrollState == SCROLL_STATE_TOUCH_SCROLL) {
picasso.resumeTag("image");
} else {
picasso.pauseTag("image");
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
int totalItemCount) {int lastInScreen = firstVisibleItem + visibleItemCount;
if (lastInScreen == totalItemCount) {
if(isUploaded == false && isLoading==false) {
isLoading = true;
// Async loading of objects
}
}
}
}
Und meine Listview:
<ListView
android:layout_marginLeft="0dp"
android:layout_marginRight="0dp"
android:paddingRight="0dp"
android:paddingLeft="0dp"
android:fastScrollEnabled="false"
android:layout_marginTop="0dp"
android:id="@+id/objectsList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:footerDividersEnabled="false"
android:scrollingCache="false"
android:animationCache="false"
android:smoothScrollbar="true"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:cacheColorHint="#00000000"
android:clipToPadding="false"
android:overScrollFooter="@android:color/transparent"/>
"Glide Speicher besser verwalten." Quelle? oder ist das dein persönliches Gefühl aufgrund deiner Beobachtung? – njzk2
https://inthecheesefactory.com/blog/get-to-know-glide-recommitted-by-google/en ist aber auch mein persönliches Gefühl. Wenn die Liste lang ist, ist der Unterschied offensichtlich. Ich schlage vor, Sie versuchen es, es dauert nur zwei Minuten. –