Как добавить последние данные в пользовательский вид списка базовых адаптеров в Android? - PullRequest
3 голосов
/ 07 марта 2012

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

Я реализовал свое приложение следующим образом:

  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();
    }
};

Я реализовал приведенный выше код на основе того, что пользователь, щелкнув по значению счетчика кнопок, будет отправлен в службу, а затем получит последнюю информацию от службы. Когда я получу последний список от службы, этот список будет отображаться в виде списка.

из приведенного выше кода я могу получить только последние предыдущие удаления.

Как я могу добавить последние данные (список) в просмотр списка в моем случае выше?

пожалуйста, любое тело, помогите мне ....

Ответы [ 4 ]

3 голосов
/ 08 марта 2012
    CustomeAdapter adapter = new CustomeAdapter(GetMsgsScreen.this,newmsgResult);

определяет этот адаптер и newmsgResult в верхней части вашего класса .. не локальная переменная внутри класса ..

Теперь, когда вы хотите обновить данные в виде списка, обновите значения / данные в newmsgResult и вызовите adapter.notifyDataSetChanged()

3 голосов
/ 07 марта 2012

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

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();
}
1 голос
/ 08 марта 2012

Первоначально загрузите представление списка с помощью customAdapter, используя результат (по предположению, результатом является arraylist)

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

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

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

, затем просто adapter.notifyDataSetChanged();

0 голосов
/ 07 марта 2012

Не создавайте новый адаптер. Сохраните оригинал и передайте ему новые данные для добавления.

...