如何将最新数据附加到android中的自定义基本适配器列表视图?

Posted

技术标签:

【中文标题】如何将最新数据附加到android中的自定义基本适配器列表视图?【英文标题】:how to append latest data to custom base adapter list view in android? 【发布时间】:2012-03-24 15:47:49 【问题描述】:

我已经使用自定义基础适配器实现了一个应用程序,用于在列表视图中显示数据。在我的应用程序中,我使用自定义基础适配器向列表视图显示了一些内容,这些内容将来自 Web 服务。我使用了一个按钮来获取服务中的最新数据。当我从服务中获取最新数据时,我想将最新数据附加到底部的列表视图中,而不删除列表视图中的先前数据。

我的应用程序实现如下:

  result = new ParseXml().convertMessages(new Model().getMessages("0"));
           count = Integer.parseInt(result.get(0).getMessageID());
           ((Button)findViewById(R.id.oldMessagesButton)).setOnClickListener(new OnClickListener() 

                @Override
                public void onClick(View v) 

                fetchNewMessages();

                
            ); 



  protected void fetchOldMessages() 
    // TODO Auto-generated method stub
    waitProgreess = ProgressDialog.show(this, "Please wait", "Loading...");
    new Thread() 
        public void run() 
            try 

                Thread.sleep(800);
                 catch (InterruptedException e) 
                
                newmessageHandler.sendEmptyMessage(0);
        
    .start();



  private Handler newmessageHandler = new Handler() 

    public void handleMessage(Message msg) 
        super.handleMessage(msg);

        Log.v("000000", "count :"+count);
        if(count>0)
        newmsgResult = new ParseXml().convertMessages(new Model().getNewMessages(""+count));

        CustomeAdapter adapter = new CustomeAdapter(GetMsgsScreen.this,newmsgResult);
        lst.setAdapter(adapter);
        adapter.notifyDataSetChanged();
        count=Integer.parseInt(newmsgResult.get(oldmsgResult.size()-1).getMessageID());
    
        waitProgreess.dismiss();
    
;

我已经实现了基于用户点击按钮计数值将被发送到服务然后从服务获取最新的上述代码。当我从服务获取最新列表时,该列表希望追加到列表视图。

从上面的代码我只能得到最新的前一个正在删除。

在上述情况下,如何将最新数据(列表)附加到列表视图?

请任何人帮助我....

【问题讨论】:

【参考方案1】:
    CustomeAdapter adapter = new CustomeAdapter(GetMsgsScreen.this,newmsgResult);

在你的类的顶部定义这个适配器和newmsgResult..不是类中的局部变量..

现在,每当您想更新列表视图中的数据时,请更新 newmsgResult 中的值/数据并调用 adapter.notifyDataSetChanged()

【讨论】:

【参考方案2】:

我认为这是因为您每次收到新消息时都在创建一个新的自定义适配器......在这一行中

CustomeAdapter adapter = new CustomeAdapter(GetMsgsScreen.this,newmsgResult);

不要这样做并尝试使用 adapter.add(Newmessage);您可以使用数组列表使工作更轻松

好的..你应该在你的自定义适配器类中有一个添加函数。你可以通过将它添加到你的自定义适配器类来做到这一点

private void customadd(String newmsg)

  //ArrayList<String> msg=new List<String>; create this array list as a source to your adapter
  msg.add(newmsg);
adapter.notifyDataSetChanged();

【讨论】:

我没有得到 add() 方法 你也可以粘贴你的适配器类吗?【参考方案3】:

使用结果使用 customAdapter 初始加载您的列表视图(假设结果是数组列表)

   CustomeAdapter adapter = new CustomeAdapter(GetMsgsScreen.this,result);
    lst.setAdapter(adapter);

一旦你有了新的值,就不需要创建新的结果和适配器对象,只需将你的结果附加到你的适配器对象中,

result.add("append your new result");

然后只需adapter.notifyDataSetChanged();

【讨论】:

【参考方案4】:

不要创建新的适配器。保留原始数据并将新数据传递给它以进行附加。

【讨论】:

以上是关于如何将最新数据附加到android中的自定义基本适配器列表视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据添加到 listView 的自定义 BaseAdapter - Android

从代码绑定到 WinRT/UWP 中的自定义附加属性

如何将自定义数据从ui-router中的视图传递到某个状态?

将现有模块更新到 Odoo 12 中的最新版本

如何删除android中的自定义列表视图项?

android中的自定义xml数据包