ListView'de veriyi sonsuz kaydırma işleviyle ayarlamak için ArrayAdapter kullanıyorum. ListView'ın satırında bir ImageView ve iki TextViews var. İlk olarak, ListView'i 10 öğe ile yüklüyorum ve aşağıya doğru kaydırın, sonraki 10 maddeyi ListView'e yüklemek için setonscrolllistener'da web servisini arıyorum. Arraylist'e yeni öğeler eklendiğinde, adaptöre ListView'i yenilemesini söylemek için adapter.notifysetdatachanged
'u ararım.ListView yeni öğeler eklendiğinde titremek
Artık sorun, yeni öğeler ListView'e eklendiğinde, tüm ListView yenilenir ve bu da ListView'da bulunan ve daha önce yüklenmiş olan görüntülerin kırpılmasına neden olur. Evet, tüm görüntüleri hem diskte hem de bellekte önbelleğe alıyorum ve kod çok kolay bir şekilde önbelleğe alınıyor.
Ayrıca bu adapter.addall(myarraylist)
'u kullanarak bağdaştırıcıya veri eklemeyi denedim, ancak yardımcı olmadı. ImageViews hala titriyor. StackOverflow hakkında çok fazla araştırma yaptım ve ListView'de tüm listeyi yenilemeden daha fazla öğe ekleyemeyeceğinizi ve gösteremeyeceğinizi keşfettim. Bunu zaten biliyorum ama ListView'e yeni veri eklemenin ve önceden yüklenmiş verileri yenilemenin bir yolu olmalı.
Bağdaştırıcıyı böyle ayarlıyorum.
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;
}
Herkes üzerinde biraz ışık tutabilir mi?
Tam olarak emin değil, ancak bu ilişkili olabilir. http://stackoverflow.com/questions/13322575/android-visible-listview-images-flicker-when-adding-data-to-arrayadapter – Zerkz
bunu deneyin https://github.com/commonsguy/cwac-endless –
Can you görüntüleri nasıl görüyorsunuz? Şerefe – asheinfeld