【问题标题】:refresh listview with timer without scroling?用计时器刷新列表视图而不滚动?
【发布时间】:2016-01-26 09:40:29
【问题描述】:

这是刷新列表视图以检查 sqlite 中的任何新条目的计时器。每当计时器结束时,它都会一次又一次地刷新列表视图。在这种情况下,我希望计时器对列表视图没有影响。它应该在最后添加新条目,而无需再次向下滚动。

Timer t = new Timer();
                    t.scheduleAtFixedRate(new TimerTask() {
                        @Override
                        public void run() {
                            runOnUiThread(new Runnable() {
                                public void run() {


                                    get_chat_data();

                                }
                            });
                        }
                    }, 500, 1000);

这是定时器中调用的函数

private void get_chat_data() {

      String fuid = getIntent().getExtras().getString("uid");
    HashMap<String, String> user = session.getUserDetails();
    String uid = user.get(SessionManager.KEY_UID);



            //  Fetching user details from sqlite
            db = new SQLiteHandler(getApplicationContext());
            /*
            *
            * sender chat
            *
            * */

            HashMap<String, String> user_info = db.CHAT_DATA_IN_LIST_VIEW(fuid, uid);

            String s_chat= user_info.get("s_chat");
            String mtime= user_info.get("mtime");
            String mdate= user_info.get("mdate");
            String spic= user_info.get("s_pic");


            String []  s_chat1 = s_chat.split(":");
            String []  mtime1 = mtime.split("=");
            String []  mdate1 = mdate.split(":");
            String []  spic1 = spic.split(":");


            /**
             *
             * reciver chat
             *
             * */

            HashMap<String, String> user_info1 = db.CHAT_DATA_IN_LIST_VIEW1(fuid, uid);
            String r_chat= user_info1.get("r_chat");
            String rpic= user_info1.get("r_pic");
            String friendid= user_info1.get("com_id");

            String []  r_chat1 = r_chat.split(":");
            String []  rpic1 = rpic.split(":");






            list.setAdapter(new Custom_Adapter_chat(this, s_chat1, r_chat1, spic1, rpic1, mtime1, mdate1));


        }

【问题讨论】:

标签: android sqlite listview chat custom-adapter


【解决方案1】:

首先,您一次又一次地调用setAdapter 是错误的。您只需调用notifyDataSetChanged() 即可刷新列表中的数据。 它也会定位。

你应该这样做:

private void get_chat_data() {

       // your code to fetch records to fill in the array

      if(adapter==null)
      {
            adapter= new Custom_Adapter_chat(this, s_chat1, r_chat1, spic1, rpic1, mtime1, mdate1);
            list.setAdapter(adapter);
      }
      else
      {
           adapter.updateData(myNewData); //update your adapter's data
           adapter.notifyDatasetChanged();
      }

}

【讨论】:

  • 我能问你我应该把这段代码放在哪里我无法让它工作@SweetWisher
  • 你需要把它放在get_chat_data方法中代替行list.setAdapter(new Custom_Adapter_chat(this, s_chat1, r_chat1, spic1, rpic1, mtime1, mdate1));
  • 嘿,我能问你我如何将数据添加到列表视图中,代码对我帮助很大,但我无法将数据传输到列表视图。帮帮我@SweetWisher ツ
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
  • 2019-04-05
  • 1970-01-01
  • 2015-10-26
相关资源
最近更新 更多