4

У меня есть вид пользовательского списка, в котором отображаются пользователи, и фотографии я извлекать данные из API, который дает JSON выход,Просмотр списка прокрутки Не Smooth

Мой вопрос о том, что просмотр списка не прокрутка гладко , он висит на секунду и свитки, он повторяет то же самое, пока мы не дойдем до конца.

Я думал, что это возможно, потому что я выполняю сетевую операцию в потоке пользовательского интерфейса, но он продолжает делать это даже после завершения загрузки?

структура моего пользовательского Listview является

<TextView style="@style/photo_post_text" 
      android:id="@+id/photo_post_text" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="demotext" 
      /> 


     <ImageView 
      android:id="@+id/userimage" 
      android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:scaleType="fitXY" 

      android:adjustViewBounds="true" 
      android:src="@drawable/pi" 
      /> 
+1

Используйте Traceview, 'StrictMode' и другие инструменты (http://www.curious-creature.org/2012/12/01/android-performance-case-study/), чтобы определить источник вашей проблемы , – CommonsWare

ответ

7

Используйте AsyncTask для загрузки ваших фотографий. Прокрутка не будет гладкой, если вы выполняете такие задачи в потоке пользовательского интерфейса.

Посмотрите на this tutorial. Это поможет вам понять, что вам нужно реализовать без дополнительных библиотек. Также имейте в виду, что строки перерисовываются все время, пока вы прокручиваете, нет реальной «отделки» загрузки. Вы можете дополнительно рассмотреть кэш изображения, например. с ConcurrentHashMap, в который вы могли бы поместить свои загруженные изображения.

+1

Спасибо, он работал! –

2

Существует несколько причин не столь гладкой прокрутки ListView. Вы можете убедиться, что вы используете некоторые из лучших практик, как

  1. использования шаблон Holder и повторно использовать точку в getView() из списка адаптера
  2. Используйте некоторую асинхронное изображение загрузки библиотеку для загрузки изображений, которые вы показываете в ListView? Напр. Universal Image Loader
  3. Используйте AsyncTask, чтобы загрузить JSON из сети, и вся связанная с сетью обработка выполняется в отдельной теме.

Как только вы убедитесь, что вы накрыли выше, он должен работать хорошо.

+1

это сработало !! Спасибо –

+0

Рад, что это было полезно. – jagmohan

3

Для изображения Загрузки быстро использовать этот LIB он очень быстро загружать изображения https://github.com/bumptech/glide

для просмотра списка прокрутки гладкого использования StrictMode .Эта записи активности методы

protected void onCreate(Bundle savedInstanceState) { 

    //StrictMode for smooth list scroll 
    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build()); 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 

    /*----- 
     ListView 
     Custom Adapter set data.... 
    ------*/} 

OnCreate() на более вещах добавить к OnCreate метод

listView.setOnScrollListener(new OnScrollListener() { 
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCoun) { 
} 
public void onScrollStateChanged(AbsListView view, int scrollState) { 
     if (scrollState != 0) 
      listView.getAdapter()).isScrolling = true; 
     else { 
      adapter.isScrolling = false; 
      adapter.notifyDataSetChanged(); 
     } 
} }); 

() добавить в класс адаптер

public static Boolean isScrolling = true; 
Смежные вопросы