как мы можем динамически добавлять только 20 изображений из веб-сервиса в виде таблицы

#android

#Android

Вопрос:

Я хочу 20 изображений на одной странице, и при нажатии на кнопку Далее я получу другие изображения на той же странице. Это означает, что, как и в почтовых программах, у нас есть «старые» и «самые старые», нажав «старые», мы получим следующие электронные письма. точно так же я хочу, чтобы изображения были здесь с помощью синтаксического анализатора XML.

 GridView gView = (GridView)findViewById(R.id.gridview);
btnNext = (Button)findViewById(R.id.btnNext);
btnPrevious = (Button)findViewById(R.id.btnPrevious);
adap = new EfficientAdapter(this);
gView.setAdapter(adap);

btnNext.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        adap.notifydatasetchanged();/*asking for create notifydatasetchanged()*/

        EfficientAdapter adap = new EfficientAdapter(this);/* shows the error and asking for create constructor  EfficientAdapter(OnClickListener)*/
        gView.setAdapter(adap);
    }
});
  

Комментарии:

1. Итак, вы хотите, чтобы кто-нибудь написал всю программу за вас?

2. Из того, что я понял, вам нужно иметь переменную say counter, увеличивайте ее при добавлении изображений в сетку, как только это количество достигнет 20, прекратите их добавление.

3. Большое спасибо за ответ.. пожалуйста, не могли бы вы помочь мне, показав мне какой-нибудь код??

4. Опубликуйте любой код, который вы написали на данный момент.

5. Не могли бы вы, пожалуйста, отредактировать это для наглядности и опубликовать пример кода? Я не совсем вижу здесь вопрос.

Ответ №1:

Прежде всего, если вы хотите одновременно анализировать все изображения из XML вместе и показывать их, это будет простой подход, вместо этого позвольте вашему файлу сервера обрабатывать это, т. Е. Каждый раз, когда вы нажимаете на URL, он должен возвращать вам 20 записей. Например

 String urlToHit=Config.basicUrl "serverfile.php?showperpage=" Config.showPerPage "amp;pageindex=" Config.currentPage;  
  

где showPerPage — это количество записей, которые вы хотите ввести на страницу, а currentPage — это индекс страницы (он будет увеличиваться для каждой новой страницы).
Теперь предположим, что у вас есть кнопка, и теперь одним нажатием кнопки проанализируйте URL (нажмите URL) и вызовите setAdapter:

 gridview.setAdapter(new ImageAdapter(getApplicationContext()));
  

и возвращать 20 с помощью getCount() вашего базового адаптера.

Надеюсь, это решит вашу проблему.

Комментарии:

1. если мы вернем 20 с помощью getCount (), то, как он узнает после нажатия кнопки next, должно начинаться с 21.

2. Каждый раз, когда вы нажимаете на URL, он возвращает вам следующие 20 записей по мере того, как вы передаете текущую страницу с URL. вам просто нужно проанализировать и показать ее.

3. Для этого вы должны вручную написать коды в свой внутренний файл (CMS), который возвращает вам xml. Это не ваша задача, это для того, кто разрабатывает CMS (файлы на сервере, которые возвращают XML) для вашего приложения.

4. да, они создали URL, по которому мы должны передать номер страницы. и ограничение. Таким образом, мы можем получать данные из веб-сервиса на основе limit.

5. да, это правильный способ сделать это. вам просто нужно нажимать определенный URL-адрес каждый раз, когда пользователь нажимает на кнопку загрузить больше и анализирует данные и показывает их в gridview с помощью setAdapter.

Ответ №2:

Ошибка, которую вы отмечаете в коде ( EfficientAdapter adap = new EfficientAdapter(this); ), заключается в том, что this в контексте этого обратного вызова ссылается на new OnClickListener , а не на представление.

Вы можете либо создать новое как EfficientAdapter adap = new EfficientAdapter(v); , либо, что гораздо лучше, повторно использовать то, что вы создали ранее:

Удалите две строки

    EfficientAdapter adap = new EfficientAdapter(this);/* shows the error and asking for create constructor  EfficientAdapter(OnClickListener)*/
    gView.setAdapter(adap);
  

и используйте обратный вызов onClick, чтобы запросить у сервера следующие 20 изображений. Заполните эти изображения в свой адаптер, а затем adap.notifyDataSetChanged() (обратите внимание на заглавные буквы) «Уведомляет прикрепленное представление о том, что базовые данные были изменены, и оно должно обновиться само».

Комментарии:

1. У Алеадама есть какой-нибудь пример кода для этого …?? или отредактируйте приведенный выше code…it будет более полезно для понимания вашей идеи…