动态刷新后如何将旧项目保留在列表视图中?

下摆

我有listview的子项来自服务器。每次平滑滚动后,我都设法获得了10个列表项,但是我的问题是添加新项之后,以前的数据被清除了。我也想要大孩子的物品。我也用过MyListAdapter().notifyDataSetChanged();,但没有得到想要的结果。伙计们请帮帮我。先感谢您。这是我的代码段:

Get_list.java:

private class getbride extends AsyncTask<String, String, String>{
    ProgressDialog pDialog;
     @Override
     protected void onPreExecute(){
        pDialog = new ProgressDialog(User_list.this);
        pDialog.setMessage("Loading...");
        pDialog.show();
     }                      
    @Override
    protected String doInBackground(String... params) {
        // TODO Auto-generated method stub

        try{
            String link = "http://Webservice.php";          

            HttpClient client = new DefaultHttpClient();
            HttpPost request = new HttpPost();
            request.setURI(new URI(link));

            List<NameValuePair> postParameters = new ArrayList<NameValuePair>();

            String lazy=String.valueOf(lcnt);
            postParameters.add(new BasicNameValuePair("lazy_cnt", lazy));

            UrlEncodedFormEntity form = new UrlEncodedFormEntity(postParameters);
            request.setEntity(form);

            HttpResponse response = client.execute(request); 
            HttpEntity entity = response.getEntity();

            result=EntityUtils.toString(entity);
            result1 = result;
            System.out.println("Result: "+result);

            SharedPreferences pref1 = getSharedPreferences("ActivityPREF", Context.MODE_PRIVATE);
            Editor ed = pref1.edit();
            ed.putString("search_res", result);
            ed.commit();

        }catch (URISyntaxException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;            
    }
     @Override
        protected void onPostExecute(String result) {
         pDialog.dismiss();
        lv=(ListView)findViewById(R.id.listreq15);  

        try {     
              if(User_list.result!=null){
                jArray=new JSONArray(User_list.result);  

                prgmNameList =new ArrayList<String>();
                prgmImages=new ArrayList<String>();
                if(jArray.length()>0)
                {
                    for(int j=0;j<jArray.length();j++){
                        prgmNameList.add(new JSONObject(jArray.getString(j)).get("name")+"");   
                        prgmImages.add(new JSONObject(jArray.getString(j)).get("education")+"");
                       }        
                    System.out.println("#########"+prgmNameList);
        CustomAdapter cadapt = new CustomAdapter(c, prgmNameList, prgmImages);

                    flag_loading=false; 

                    lv.setAdapter(cadapt);
                    lv.invalidateViews();
                    cadapt.notifyDataSetChanged();

                    int count=lv.getAdapter().getCount();
                    String cnt_bride=String.valueOf(count);
                    TextView list_cnt=(TextView)findViewById(R.id.cnt);
                    list_cnt.setText(cnt_bride);

                    lv.setOnScrollListener(new OnScrollListener() {
                        @Override
                        public void onScroll(AbsListView view, int firstVisibleItem,
                                int visibleItemCount, int totalItemCount) {
                            // TODO Auto-generated method stub
                            if(firstVisibleItem+visibleItemCount == totalItemCount && totalItemCount!=0)
                            {
                                if(flag_loading == false)
                                {
                                    flag_loading = true;
                                    new getbride().execute("param1","param2","param3");
                                    lcnt++;

                                    int count=lv.getAdapter().getCount();
                                    String cnt_bride=String.valueOf(count);
                                    TextView list_cnt=(TextView)findViewById(R.id.cnt);
                                    list_cnt.setText(cnt_bride);
                                }
                            }                               
                        }
                        @Override
                        public void onScrollStateChanged(AbsListView arg0,
                                int arg1) {
                            // TODO Auto-generated method stub

                        }
                    });
                }
              }else{
                  Toast.makeText(getApplicationContext(),"No internet connection...", Toast.LENGTH_SHORT).show();
              }
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
}

Activity.java:

public class User_list extends Activity {
ListView lv;
JSONArray jArray;
Context c;
public static int cnt,lcnt;
public static String result,result1,partial,u_id,result2,edu,f_name;
int age,ht;
boolean flag_loading;
public static List<String> prgmImages;
public static List<String> prgmNameList;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user_list);

    Intent i = getIntent();
    String call=i.getStringExtra("call_for");
    if(call==null){
        try {
            search();
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    else if(call.equalsIgnoreCase("br")){
    new getbride().execute("param1","param2","param3");
    lcnt=0;
    }

    else{
        new getgroom().execute("param1","param2","param3");
        lcnt=0;
    }
    c=this;  }
丹尼尔·纽金特(Daniel Nugent)

声明并设置CustomAdapter,然后在ArrayLists初始化Activity

public class User_list extends Activity {
ListView lv;
JSONArray jArray;
Context c;
public static int cnt,lcnt;
public static String result,result1,partial,u_id,result2,edu,f_name;
int age,ht;
boolean flag_loading;
public static List<String> prgmImages;
public static List<String> prgmNameList;
CustomAdapter cadapt; //Added declaration here
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user_list);


     lv=(ListView)findViewById(R.id.listreq15); //added
     prgmNameList =new ArrayList<String>(); //added
     prgmImages=new ArrayList<String>(); //added
     cadapt = new CustomAdapter(c, prgmNameList, prgmImages); //initialize this here
     lv.setAdapter(cadapt); //added


    Intent i = getIntent();
    String call=i.getStringExtra("call_for");
    if(call==null){
        try {
            search();
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    else if(call.equalsIgnoreCase("br")){
    new getbride().execute("param1","param2","param3");
    lcnt=0;
    }

    else{
        new getgroom().execute("param1","param2","param3");
        lcnt=0;
    }
    c=this;
}

然后,在您AsyncTask刚刚调用的方法中notifyDataSetChanged(),将新值添加到数据集中:

       @Override
        protected void onPostExecute(String result) {
         pDialog.dismiss();
        //lv=(ListView)findViewById(R.id.listreq15);  //remove

        try {     
              if(User_list.result!=null){
                jArray=new JSONArray(User_list.result);  

                //prgmNameList =new ArrayList<String>(); //remove
                //prgmImages=new ArrayList<String>(); //remove
                if(jArray.length()>0)
                {
                    for(int j=0;j<jArray.length();j++){
                        prgmNameList.add(new JSONObject(jArray.getString(j)).get("name")+"");   
                        prgmImages.add(new JSONObject(jArray.getString(j)).get("education")+"");
                       }        
                    System.out.println("#########"+prgmNameList);
                   //CustomAdapter cadapt = new CustomAdapter(c, prgmNameList, prgmImages); //remove

                    flag_loading=false; 

                    //lv.setAdapter(cadapt); //remove
                    //lv.invalidateViews(); //don't think this is needed
                    cadapt.notifyDataSetChanged(); //This is needed!

                    int count=lv.getAdapter().getCount();
                    String cnt_bride=String.valueOf(count);
                    TextView list_cnt=(TextView)findViewById(R.id.cnt);
                    list_cnt.setText(cnt_bride);

                    lv.setOnScrollListener(new OnScrollListener() {
                        @Override
                        public void onScroll(AbsListView view, int firstVisibleItem,
                                int visibleItemCount, int totalItemCount) {
                            // TODO Auto-generated method stub
                            if(firstVisibleItem+visibleItemCount == totalItemCount && totalItemCount!=0)
                            {
                                if(flag_loading == false)
                                {
                                    flag_loading = true;
                                    new getbride().execute("param1","param2","param3");
                                    lcnt++;

                                    int count=lv.getAdapter().getCount();
                                    String cnt_bride=String.valueOf(count);
                                    TextView list_cnt=(TextView)findViewById(R.id.cnt);
                                    list_cnt.setText(cnt_bride);
                                }
                            }                               
                        }
                        @Override
                        public void onScrollStateChanged(AbsListView arg0,
                                int arg1) {
                            // TODO Auto-generated method stub

                        }
                    });
                }
              }else{
                  Toast.makeText(getApplicationContext(),"No internet connection...", Toast.LENGTH_SHORT).show();
              }
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

请注意,我认为invalidateViews()此处不需要致电看到这篇文章:ListView.invalidateViews()和Adaptor.notifyDataSetChanged()之间有什么区别吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用vuex刷新后如何将商品保留在购物车中

来自分类Dev

刷新后如何将数据保留在localStorage中?

来自分类Dev

更新气泡图中的数据时如何将圆圈保留在svg中

来自分类Dev

如何将图片保留在左侧,将内容保留在右侧?

来自分类Dev

如何创建动态无序列表但将选定的结果保留在顶部

来自分类Dev

提交后如何将字段值保留在表单中?

来自分类Dev

搜索后如何将打开的文件保留在eclipse选项卡中?

来自分类Dev

关闭后如何将Skype包装器保留在消息菜单中?

来自分类Dev

(javax或hibernate)验证后,如何将变量保留在JSP中

来自分类Dev

提交后如何将数据保留在文本区域内?

来自分类Dev

页面重新加载后如何将文件保留在表单集中?. 姜戈

来自分类Dev

Python-如何将元素类型保留在列表中

来自分类Dev

如果我使用 flexbox,如何将 ah 标题保留在列表上?

来自分类Dev

如何将icomoon图标保留在中间

来自分类Dev

如何将文字保留在父项中?

来自分类Dev

如何将图片保留在div内?

来自分类Dev

如何将所选数据保留在表中?

来自分类Dev

如何将特定节点保留在networkx中

来自分类Dev

如何将ID保留在dummyVars()中

来自分类Dev

如何将动画div保留在容器中

来自分类Dev

如何将div元素保留在页面底部

来自分类Dev

如何在每个按钮单击事件后添加新项目并将以前的项目保留在通用列表中?

来自分类Dev

将文件保留在树状视图中,但是在将文件取出时会遇到麻烦

来自分类Dev

将选择保留在列表中

来自分类Dev

我如何将InkScape项目导出到PDF或SVG,并且链接仍保留在输出中(我在Linux上)?

来自分类Dev

当浏览器调整大小时,将元素保留在父视图中

来自分类Dev

重新启动后,如何将IP保留在单个节点的dockerized Consul群集中

来自分类Dev

在swiftUI关闭应用程序后,如何将数据保留在我的应用程序中?

来自分类Dev

php中的爆炸功能,使用爆炸后如何将数据保留在文本框中?

Related 相关文章

  1. 1

    如何使用vuex刷新后如何将商品保留在购物车中

  2. 2

    刷新后如何将数据保留在localStorage中?

  3. 3

    更新气泡图中的数据时如何将圆圈保留在svg中

  4. 4

    如何将图片保留在左侧,将内容保留在右侧?

  5. 5

    如何创建动态无序列表但将选定的结果保留在顶部

  6. 6

    提交后如何将字段值保留在表单中?

  7. 7

    搜索后如何将打开的文件保留在eclipse选项卡中?

  8. 8

    关闭后如何将Skype包装器保留在消息菜单中?

  9. 9

    (javax或hibernate)验证后,如何将变量保留在JSP中

  10. 10

    提交后如何将数据保留在文本区域内?

  11. 11

    页面重新加载后如何将文件保留在表单集中?. 姜戈

  12. 12

    Python-如何将元素类型保留在列表中

  13. 13

    如果我使用 flexbox,如何将 ah 标题保留在列表上?

  14. 14

    如何将icomoon图标保留在中间

  15. 15

    如何将文字保留在父项中?

  16. 16

    如何将图片保留在div内?

  17. 17

    如何将所选数据保留在表中?

  18. 18

    如何将特定节点保留在networkx中

  19. 19

    如何将ID保留在dummyVars()中

  20. 20

    如何将动画div保留在容器中

  21. 21

    如何将div元素保留在页面底部

  22. 22

    如何在每个按钮单击事件后添加新项目并将以前的项目保留在通用列表中?

  23. 23

    将文件保留在树状视图中,但是在将文件取出时会遇到麻烦

  24. 24

    将选择保留在列表中

  25. 25

    我如何将InkScape项目导出到PDF或SVG,并且链接仍保留在输出中(我在Linux上)?

  26. 26

    当浏览器调整大小时,将元素保留在父视图中

  27. 27

    重新启动后,如何将IP保留在单个节点的dockerized Consul群集中

  28. 28

    在swiftUI关闭应用程序后,如何将数据保留在我的应用程序中?

  29. 29

    php中的爆炸功能,使用爆炸后如何将数据保留在文本框中?

热门标签

归档