Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否使用计时器刷新listview而不进行搜索?_Android_Sqlite_Listview_Chat_Custom Adapter - Fatal编程技术网

Android 是否使用计时器刷新listview而不进行搜索?

Android 是否使用计时器刷新listview而不进行搜索?,android,sqlite,listview,chat,custom-adapter,Android,Sqlite,Listview,Chat,Custom Adapter,这是刷新listview以检查sqlite中任何新条目的计时器。每当计时器运行时,它会一次又一次地刷新列表视图。在这种情况下,我希望计时器对listview没有影响。它应该在末尾添加新条目,而无需再次向下滚动 Timer t = new Timer(); t.scheduleAtFixedRate(new TimerTask() { @Override publ

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

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


        }
这是在计时器中调用的函数

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


        }
private void get\u chat\u data(){
字符串fuid=getIntent().getExtras().getString(“uid”);
HashMap user=session.getUserDetails();
字符串uid=user.get(SessionManager.KEY\u uid);
//从sqlite获取用户详细信息
db=新的SQLiteHandler(getApplicationContext());
/*
*
*发送者聊天
*
* */
HashMap用户信息=db.CHAT\u列表视图中的数据(fuid,uid);
字符串s_chat=user_info.get(“s_chat”);
字符串mtime=user_info.get(“mtime”);
字符串mdate=user_info.get(“mdate”);
字符串spic=user_info.get(“s_pic”);
字符串[]s_chat1=s_chat.split(“:”);
字符串[]mtime1=mtime.split(“”);
字符串[]mdate1=mdate.split(“:”);
字符串[]spic1=spic.split(“:”);
/**
*
*接收聊天
*
* */
HashMap用户\u info1=db.CHAT\u数据\u在\u列表\u视图1中(fuid,uid);
String r_chat=user_info1.get(“r_chat”);
字符串rpic=user_info1.get(“r_pic”);
String friendid=user_info1.get(“com_id”);
字符串[]r_chat1=r_chat.split(“:”);
字符串[]rpic1=rpic.split(“:”);
list.setAdapter(新的自定义适配器聊天(this,s_chat1,r_chat1,spic1,rpic1,mtime1,mdate1));
}

首先,反复调用
setAdapter
是一个错误。只需调用
notifyDataSetChanged()
即可刷新列表中的数据。 它还将定位

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


        }
你应该这样做:

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


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

}

看起来您在
get_chat_data()的末尾设置了一个新适配器函数。这将丢失列表/回收器视图的滚动状态。因此,获取原始适配器的引用,并尝试使用它添加新数据。我可以问您我应该将此代码放在何处吗?我无法在@sweetwiser使其工作。您需要将其放在
get_chat_data
方法中,以代替行
列表。setAdapter(新自定义_adapter_chat(这个,s_chat1,r_chat1,spic1,rpic1,mtime1,mdate1));
heyy我能问一下我如何将数据添加到列表视图吗这里的代码对我帮助很大,但我无法将数据传输到列表视图。help me@SweetWisherツ