使用新数据更新或合并 arrayadapter - 按钮更多

update or merge arrayadapter with new data - button more

我需要在 ListView 中添加更多我从数据库中获取的现有数据,但是,使用 "more" 按钮而不启动或刷新 activity。

我建议这样,使用 adapter.AddAll (NewAdapter),但它只显示列表中的地址(我认为就是它)行,正如您在单击后添加的行的图像中看到的更像是他没有确定 xml 字段。但是adapter是一样的,新建一个listview只有用新的Adpter才能正确显示。

有什么建议吗?

@Override
    protected void onPostExecute(List<RssItem> result) {
        progressBar.dismiss();

        // Get a ListView from main view
        ListView itcItems = (ListView) findViewById(R.id.listMainView);

        if (Integer.parseInt(limit) < 1) {
            adapter = new ArrayAdapter<RssItem>(local, android.R.layout.simple_list_item_1, result);
            itcItems.setAdapter(adapter);
            itcItems.setOnItemClickListener(new ListListener(result, local));

        } else {

            Nadapter = new ArrayAdapter<RssItem>(local, android.R.layout.simple_list_item_1, result);

            if (Nadapter.getCount() == 0){
                final Button btMais = (Button) findViewById(R.id.btMais);
                btMais.setVisibility(View.GONE);
                Toast.makeText(getBaseContext(), "Don't more data.", Toast.LENGTH_SHORT).show();
            } else {
                adapter.addAll(Nadapter);
                itcItems.setAdapter(adapter);
                itcItems.setOnItemClickListener(new ListListener(result, local));
            }
        }
    }

结束代码并运行帮助Shadab:

 @Override
    protected void onPostExecute(List<RssItem> result) {
        progressBar.dismiss();

        // Get a ListView from main view
        ListView itcItems = (ListView) findViewById(R.id.listMainView);

        if (Integer.parseInt(limit) < 1) {
            adapter = new ArrayAdapter<RssItem>(local, android.R.layout.simple_list_item_1, result);
            itcItems.setAdapter(adapter);
            itcItems.setOnItemClickListener(new ListListener(result, local));

        } else {

            Nadapter = new ArrayAdapter<RssItem>(local, android.R.layout.simple_list_item_1, result);

            if (Nadapter.getCount() == 0){
                final Button btMais = (Button) findViewById(R.id.btMais);
                btMais.setVisibility(View.GONE);
                Toast.makeText(getBaseContext(), "Don't more data.", Toast.LENGTH_SHORT).show();
            } else {
                adapter.addAll(result);
                adapter.notifyDataSetChanged();
            }
        }
    }

您需要在适配器上添加项目而不是新适配器。

参考:ArrayAdaper documentation.

您不需要创建新适配器并合并,而是需要在现有适配器中设置新数据并使用 notifyDataSetChanged().

刷新它
 @Override
        protected void onPostExecute(List<RssItem> result) {
            progressBar.dismiss();

            // Get a ListView from main view
            ListView itcItems = (ListView) findViewById(R.id.listMainView);

            if (Integer.parseInt(limit) < 1) {
                adapter = new ArrayAdapter<RssItem>(local, android.R.layout.simple_list_item_1, result);
                itcItems.setAdapter(adapter);
                itcItems.setOnItemClickListener(new ListListener(result, local));

            } else {



                if (Nadapter.getCount() == 0){
                    final Button btMais = (Button) findViewById(R.id.btMais);
                    btMais.setVisibility(View.GONE);
                    Toast.makeText(getBaseContext(), "Don't more data.", Toast.LENGTH_SHORT).show();
                } else {
                  //Whatever your initial list was add the new data in that list
                    oldList.addAll(result);
                    adapter.notifyDataSetChanged();
                }
            }
        }