-3

大家好,我正在开发类似于 facebook 的应用程序。目前我被困在一个点上,就像我们在 facebook 上的帖子一样,这些帖子显示在我们的墙上,因为所有帖子都是像 20 20 时尚一样的批量显示我想在我的应用程序中应用的东西。对于那件事,我使用 listview 获取值表单服务器并根据它创建视图我也得到所有值但问题是当我添加第一个 20 值时它工作正常但是当我添加另一个 20 值时它会删除以前的数据在列表视图中。

知道如何在我的应用程序中执行此操作,并在此先感谢....

我的函数从服务器获取值

private void getPostnew(String start) {

        String URL = start;

        System.out.println("start value new :" + start);

        final String usernamefor = "";

        aq = new AQuery(getParent());
        listitem = new ArrayList<BeanTop>();
        aq.ajax(URL, JSONObject.class, 10 * 1000,
                new AjaxCallback<JSONObject>() {

                    @Override
                    public void callback(String url, JSONObject json1,
                            AjaxStatus status) {

                        System.out.println("json " + json1);

                        if (json1 == null) {

                        } else {

                            try {

                                JSONArray jarray = json1
                                        .getJSONArray("subject");

                                for (int j = 0; j < jarray.length(); j++) {
                                    try {
                                        JSONObject j1 = jarray.getJSONObject(j);

                                        try {

                                            listcount = j1
                                                    .getString("likecount");

                                        } catch (Exception e) {
                                            listcount = "0";

                                        }

                                        AddObject(j1.getString("text"),
                                                j1.getString("leftpic"),
                                                j1.getString("rightpic"),
                                                j1.getString("rightvotecount"),
                                                j1.getString("leftvotecount"),
                                                j1.getString("textleft"),
                                                j1.getString("textright"),
                                                j1.getString("date_created"),
                                                j1.getString("voteid"),
                                                j1.getString("user"),
                                                j1.getString("dom"),
                                                j1.getString("Isvoted"),
                                                j1.getString("Islike"),
                                                j1.getString("profilepic"),
                                                listcount,
                                                j1.getString("commentcount"));

                                    } catch (Exception e) {

                                        e.printStackTrace();
                                    }

                                }
                            } catch (Exception e) {

                                e.printStackTrace();
                            }

                        }

                        FriendlistAdapter ad = new FriendlistAdapter(Top.this,
                                listitem);
                        subjectlist.setAdapter(ad);
                        ad.notifyDataSetChanged();

                    }

                });

    }

bean类中保存数据的方法

private void AddObject(String string1, String string2, String string3,
            String string5, String string6, String string7, String string8,
            String string9, String string10, String string11,
            String usernamefor, String isvoted, String isliked,
            String profilepic, String likecount, String commentcount) {

        BeanTop ib = new BeanTop();

        Date date = null;
        try {
            System.out.println("date " + string9);
            date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(string9);
        } catch (Exception e) {

            e.printStackTrace();
        }

        ib.setText(string1);
        ib.setLeftpic(string2);
        ib.setRightpic(string3);
        ib.setRightVote(string5);
        ib.setLeftVote(string6);
        ib.setLefttext(string7);
        ib.setRighttext(string8);
        ib.setDate(string9);
        ib.setDate1(date);
        ib.setVoteid(string10);
        ib.setUsername(string11);
        ib.setDom(usernamefor);
        ib.setIsvoted(isvoted);
        ib.setIsliked(isliked);
        ib.setProfilepic(profilepic);
        ib.setLikecount(likecount);
        ib.setCommentcount(commentcount);
        List<BeanTop> bookingList = new ArrayList<BeanTop>();
        bookingList.addAll(listitem);
        Collections.sort(bookingList, new Comparator<BeanTop>() {
            public int compare(BeanTop m1, BeanTop m2) {
                return m1.getDate().compareTo(m2.getDate());
            }
        });
        Collections.reverse(bookingList);

        try {
        listitem.clear();

        } catch (Exception e) {

            e.printStackTrace();
        }
        listitem.addAll(bookingList);
        try {
            bookingList.clear();

        } catch (Exception e) {

            e.printStackTrace();
        }

        listitem.add(ib);

    }
4

3 回答 3

0

不能说没有看到你的代码,但我可以告诉你这样做的一般方法......

首先,您应该维护一个列表,例如在班级级别,例如...

List<MyPost> posts = ArrayList<MyPost>();

然后,您可以通过在其中传递“帖子”列表来创建适配器。

每次从服务器获取项目时,只需调用“.addAll(xxx)”到“帖子”列表,例如,

posts.addAll(newItems);

在那之后,调用yourAdapter.notifyDatasetChanged();以便该列表可以重绘/更新其视图...

在你的代码中......使用,

if (listitem == null) {
  listitem = new ArrayList<BeanTop>();
}

在你 getPostnew() 而不是 only listitem = new ArrayList<BeanTop>();.

希望这可以帮助...

于 2013-10-25T08:01:47.247 回答
0

listitem = new ArrayList<BeanTop>();每次调用方法时,您都在重新初始化getPostnew。这就是为什么您的旧帖子丢失的原因。尝试将该行更改为:

    if (listitem == null) {
        listitem = new  ArrayList<BeanTop>();
    }
于 2013-10-25T08:02:33.543 回答
0

您应该使用全局变量来存储从服务器获取的数据,在您的方法中 getPostnew(String start)每次执行它时,listitem都会重新创建;因此最后的数据将丢失。

于 2013-10-25T08:15:35.377 回答