Добавление новых элементов в ListView из базы данных

Недавно я узнал, как получать информацию из базы данных с помощью библиотеки Volley.
Итак, теперь я знаю, как получать данные из php-скрипта в Activity.

Моя проблема - отобразить данные о моей деятельности, я объясню это:

У меня есть проект по созданию приложения для веб-сайта, на котором есть новостные статьи. Итак, в моей базе данных есть таблица с названием article, в которой содержится много статей.
Конечно, я не хочу загружать их все в начале действия, поэтому я написал скрипт php, который отправляет статьи в приложение 5 на 5. Скрипт в порядке.

В моем классе запросов, который выполняет строковый запрос StringRequest, я получаю следующие статьи: String titles[] = new String[numberOfArticlesIWantToLoad]и String texts[] = new String[numberOfArticlesIWantToLoad].
С помощью обратного вызова я отправляю их в свою деятельность и отображаю их в ListView с адаптером.

Адаптер работает хорошо, но я не знаю, как мне загрузить больше элементов из моей базы данных и отобразить их под ранее загруженными статьями ... когда я снова делаю запрос в своей базе данных (который отправляет моей деятельности следующие 5 статей) и я снова вызываю адаптер, отображаются новые статьи, но не прежние ...
Я знаю, что я недалеко от ожидаемого ответа ...

Прежде всего, подходит ли мой сценарий для того, что мне нужно? Во-вторых, что мне нужно изменить в моем адаптере, чтобы загружать следующие статьи после предыдущих статей?

Это мне очень поможет, заранее спасибо за время, которое вы уделили моей проблеме!

Вот мой адаптер:

    public class MonAdapter extends ArrayAdapter<String>{
    private final Context context;
    private String[] values;
    private String[] values2;

    public MonAdapter(Context context, String[] values, String[] values2) {
        super(context, -1, values);
        this.context = context;
        this.values = values;
        this.values2 = values2;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(R.layout.list_layout, parent, false);
        TextView titre = (TextView) rowView.findViewById(R.id.titre);
        TextView article = (TextView) rowView.findViewById(R.id.article);
        titre.setText(values[position]);
        article.setText(values2[position]);


        return rowView;
    }

    public void addItems(String[] titres, String[] texts){
        String[] listTitres = new String[this.values.length + titres.length];
        String[] listTexts = new String[this.values2.length + texts.length];

        for(int i=0;i<this.values.length;i++){
            listTitres[i] = this.values[i];
            listTexts[i] = this.values2[i];
        }
        for(int i=0;i<titres.length;i++){
            listTitres[this.values.length+i] = titres[i];
            listTexts[this.values.length+i] = texts[i];
        }

        this.values = listTitres;
        this.values2 = listTexts;
    }
}

И вот моя деятельность, откуда я вызываю StringRequest (в классе MyRequest) и адаптер:
Я старался изо всех сил удалить ненужный код, надеюсь, он не слишком длинный

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    footerLayout = (RelativeLayout)getLayoutInflater().inflate(R.layout.footer_layout, null);
    pb_charger = (ProgressBar)footerLayout.findViewById(R.id.pb_charger);
    text = (TextView)findViewById(R.id.text);
    pb_loader = (ProgressBar)findViewById(R.id.pb_loader);
    list = (ListView)findViewById(R.id.list);
    btn_charger = (Button)footerLayout.findViewById(R.id.btn_charger);



    queue = VolleySingleton.getInstance(this).getRequestQueue();
    request = new MyRequest(this, queue);

    request.getArticles(nombreCharger, NOMBRE_ARTICLE_CHARGER, new MyRequest.GetArticlesCallback() {
        @Override
        public void onSuccess(String[] listeTitres, String[] listeArticles, boolean fin) {

            *Some irrelevant code*

                final MonAdapter adapterTitres = new MonAdapter(getApplicationContext(), listeTitres, listeArticles);
                list.setAdapter(adapterTitres);
                adapterTitres.notifyDataSetChanged();
                list.addFooterView(footerLayout);
                // list.removeFooterView(footerLayout);

            }
            nombreCharger++;

        }

        @Override
        public void onError(String error, String id) {

        }
    });




    btn_charger.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            btn_charger.setVisibility(View.INVISIBLE);
            pb_charger.setVisibility(View.VISIBLE);
            list.removeFooterView(footerLayout);

            request.getArticles(nombreCharger, NOMBRE_ARTICLE_CHARGER, new MyRequest.GetArticlesCallback() {
                @Override
                public void onSuccess(String[] listeTitres, String[] listeArticles, boolean fin) {

                    *Some irrelevant code*

                        MonAdapter a = (MonAdapter) list.getAdapter();
                        a.addItems(listeTitres, listeArticles);
                        list.addFooterView(footerLayout);
                        list.setAdapter(a);
                        a.notifyDataSetChanged();

                    }
                    nombreCharger++;
                }

                @Override
                public void onError(String error, String id) {


                }
            });


        }
    });

}

РЕДАКТИРОВАТЬ :

Вот ошибка с момента изменений:

04-12 22:47:34.640 12584-12584/com.example.thib.databaseaffichage E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                    Process: com.example.thib.databaseaffichage, PID: 12584
                                                                                    java.lang.ClassCastException: android.widget.HeaderViewListAdapter cannot be cast to com.example.thib.databaseaffichage.MonAdapter
                                                                                        at com.example.thib.databaseaffichage.MainActivity$2$1.onSuccess(MainActivity.java:142)
                                                                                        at com.example.thib.databaseaffichage.myrequest.MyRequest$1.onResponse(MyRequest.java:63)
                                                                                        at com.example.thib.databaseaffichage.myrequest.MyRequest$1.onResponse(MyRequest.java:39)
                                                                                        at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:67)
                                                                                        at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
                                                                                        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
                                                                                        at android.os.Handler.handleCallback(Handler.java:808)
                                                                                        at android.os.Handler.dispatchMessage(Handler.java:103)
                                                                                        at android.os.Looper.loop(Looper.java:193)
                                                                                        at android.app.ActivityThread.main(ActivityThread.java:5292)
                                                                                        at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                        at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
                                                                                        at dalvik.system.NativeStart.main(Native Method)

person thib sig    schedule 12.04.2016    source источник


Ответы (1)


где в вашем проекте находится HeaderViewListAdapter?

java.lang.ClassCastException: android.widget.HeaderViewListAdapter cannot be cast to com.example.thib.databaseaffichage.MonAdapter
person Nguyễn Trung Hiếu    schedule 13.04.2016
comment
Привет ! В моем проекте нет headerViewListAdapter ... Нужно ли его переопределить? - person thib sig; 13.04.2016