2014-07-04 3 views
2

Привет, я не уверен в реализации этого конкретного сценария, мне нужны некоторые предложения по нему. У меня есть listview, и я буду обновлять его, сделав серверный вызов, если это небольшой объем данных, он будет быстрым, а что, если у меня будет 5000 записей? мне нужно загрузить их в память или базу данных, а затем запросить его и обновить listview? для чего лучше всего?Android: Управление сетевым подключением и списком

Предположим, когда я загружаю данные, и вдруг происходит падение сети? то как я буду обрабатывать данные и обновлять список?

ответ

1

Я не уверен 5K записей, но ListViews известны обрабатывать хорошо, даже большое количество записей с использованием эффективного механизма рециркуляции. См. this thread для подробного объяснения.

Теперь сделайте себе одолжение и используйте Volley для загрузки сетевого ресурса. Он намного лучше выполняет работу в async-загрузке записей в списки, чем большинство из нас ... В любом случае либо используемая вами библиотека, либо ваш собственный код должны выполнять загрузку ресурсов/создание сети из фонового потока.

Вы также должны применить код ViewHolder pattern к вашему коду. Использование ViewHolder - это идея капота. это становится решающим для действительно большого количества записей. Пожалуйста, используйте его.
Он должен выглядеть следующим образом

class ViewHolder { 
    textView text1; 
    Button button1; 
} 

class MyAdapter { 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder viewHolder = null; 
     if (convertView==null){ 
       LayoutInflater inflater = ((Activity) mContext).getLayoutInflater(); 
       convertView = inflater.inflate(layoutResourceId, parent, false); 
       viewHolder = new ViewHolderItem(); 
       viewHolder.text1 = (TextView) convertView.findViewById(R.id.text1); 
       viewHolder.button1 = (Button) convertView.findViewById(R.id.button1); 
       .......... 
       convertView.setTag(viewHolder); 
     } 
     viewHolder = (ViewHolderItem) convertView.getTag(); 
     ObjectItem objectItem = data[position]; 
     .......... 
    } 
} 


И, наконец, если вам действительно нужна частичная загрузка вместе с Загрузить больше функциональности, пожалуйста, прочитайте: http://www.androidhive.info/2012/03/android-listview-with-load-more-button/


0

Если у вас 5000 записей, вы не должны получать все записи, вам необходимо ограничить запрос на сервере, чтобы вы не отправляли все записи.

Затем вы можете реализовать «Show More или EndLess», чтобы при необходимости получать больше данных с сервера.

Example load more

+0

поэтому сначала я должен загрузить их в мою базу данных, а затем обновить listview? – teekib

+0

Предположим, если я обновил свой список с 20 записями и, если произойдет внезапное падение в сети, как я должен справиться с этим сценарием? – teekib

+0

И что, если я не хочу использовать какую-либо нагрузку больше кнопок или разбивки на страницы, как я должен это делать. – teekib

 Смежные вопросы

  • Нет связанных вопросов^_^