J'ai vu quelques questions similaires, mais je n'ai pas pu résoudre mon problème. J'ai un ListView avec un ImageView et TextView. J'utilise un adaptateur personnalisé et un pattern viewHolder mais ma liste ne défile pas toujours correctement? J'ai déjà téléchargé des images dans mon dossier mipmap, donc je ne les télécharge pas directement. Je ne sais pas quoi d'autre puis-je faire pour améliorer le défilement rapide, comme dans Quora ou toute autre application professionnelle ListView? Voici mon adaptateur:ListView défilement lisse dans Android?
class customAdapter extends BaseAdapter {
ArrayList<Object> itemList;
Activity context;
public LayoutInflater inflater;
public customAdapter(Activity context,ArrayList<Object> itemList) {
super();
this.context = context;
this.itemList = itemList;
this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
private static class ViewHolder {
TextView text;
ImageView image;
}
@Override
public int getCount() {
return itemList.size();
}
@Override
public Object getItem(int position) {
return itemList.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
ViewHolder holder;
if(convertView == null){
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.custom_row, parent, false);
holder.text = (TextView) convertView.findViewById(R.id.text);
holder.image = (ImageView) convertView.findViewById(R.id.image);
convertView.setTag(holder);
} else
// View is being recycled, retrieve the viewHolder object from tag
holder = (ViewHolder) convertView.getTag();
ListItem items = (ListItem) itemList.get(position);
holder.text.setText(items.getText());
holder.image.setImageResource(items.getImg());
return convertView;
}
}
Voici mon custom_row:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="70dp"
android:layout_height="70dp"
android:id="@+id/image"
android:layout_marginTop="25dp"
android:layout_marginLeft="20dp"
android:src="@mipmap/austria" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/text"
android:layout_marginTop="45dp"
android:layout_marginLeft="30dp"
android:textColor="#ffffff"
android:textStyle="bold" />
Et voici l'échantillon d'images J'utilise: http://img.freeflagicons.com/thumb/round_icon/austria/austria_640.png
Pourquoi utilisez-vous 'ListView' s'il y a' RecyclerView' pendant un moment? Afficher aussi s'il vous plaît poster votre 'custom_row.xml' et un échantillon d'images que vous utilisez ici. – Divers
Je suis relativement nouveau à Android, et en essayant de développer ma première application. J'ai donc pensé que ListView était un bon choix. –
Hmm .. Je ne vois aucun problème dans le côté de l'adaptateur. Peut-être que vous devriez être plus précis sur la façon dont vous allez chercher les données listview (pas seulement l'image bien sûr) et le peupler –