Używam ArrayAdapter do ustawiania danych w ListView z nieskończoną funkcją przewijania. There's ImageView i dwa TextViews w wierszu ListView. Na początku ładuję ListView z 10 elementami i przewijając w dół, wywołuję usługę sieciową w setonscrolllistener, aby załadować kolejne 10 elementów do ListView. Po dodaniu nowych elementów do listy należy po prostu zadzwonić pod numer adapter.notifysetdatachanged
, aby przekazać adapterowi możliwość odświeżenia ListView.ListView migotanie po dodaniu nowych elementów
Problem polega na tym, że za każdym razem, gdy nowe pozycje zostaną dodane do ListView, cały ListView odświeża się i powoduje migotanie obrazów z już załadowanego ListView. Tak, buforuję wszystkie obrazy na dysku i pamięci, a kod wykonuje cache bardzo płynnie.
Próbowałem też dodawanie danych do karty za pomocą tego adapter.addall(myarraylist)
ale to nie pomogło. ImageViews nadal migocze. Dużo o tym przeszukałem na StackOverflow i odkryłem, że nie możesz dodawać i pokazywać więcej elementów w ListView bez odświeżania całego listView. Już to wiem, ale musi istnieć jakiś sposób dodawania nowych danych do ListView i nieodświeżania już załadowanych danych.
Konfiguruję adapter w ten sposób.
public View getView(int position, View view, ViewGroup parent)
{
int main = R.layout.layout;
ViewHolder holder = null;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (view == null) {
holder = new ViewHolder();
view = inflater.inflate(main, null);
holder.image = (ImageView) convertView.findViewById(R.id.imageview);
///More stuff
view.setTag(holder);
} else {
holder = (ViewHolder)view.getTag();
}
// Loading ImageViews by Urls
return view;
}
Czy ktoś mógłby rzucić trochę światła na to?
Nie do końca pewny, ale może być powiązany. http://stackoverflow.com/questions/13322575/android-visible-listview-images-flicker-when-adding-data-to-arrayadapter – Zerkz
spróbować tej https://github.com/commonsguy/cwac-endless –
Można pokazać, jak ładujesz obrazy do widoku? Pozdrowienia – asheinfeld