在android中刷新listview

时间:2012-01-16 09:19:53

标签: android listview

我有一个listview,其中包含来自webservice的值。每个页面只包含10个listitems,第2页包含10个等等。每个listitem都是可点击的,它包含一个主要用于投票的按钮。所以当我点击按钮时列表项1,将值添加到webservice。

按钮点击代码放在自定义基础适配器类中。所以我可以轻松添加投票。但问题是,当我提交投票时,我也要刷新我的列表视图。如果iam在页面中没有5,刷新listview页面。

如何在将值提交给webservice后立即刷新此列表视图?

main.java的示例代码

private class ProgressThreadNextPageLoading extends
AsyncTask<String, Void, String> {

    // private String Content;




    @Override
    protected void onPreExecute() {

        progressDialog = new ProgressDialog(KidsCrackMeUp.this);

        progressDialog.setMessage("Loading..Please Wait..");
        progressDialog.setIcon(R.drawable.icon);


        progressDialog.show();



    }

    @Override
    protected String doInBackground(String... urls) {

        String response = "";

        // call ur webservice here

        try {

            //  pagenum = 1;
            posts= web
            .getAllposts(pagenum);
            response = "Yes";

        } catch (Exception e) {

            e.printStackTrace();

            response = "Failure";

        }

        return response;

    }

    @Override
    protected void onPostExecute(String result) {

        // below line code is to dismiss the progress bar


        progressDialog.dismiss();
        if (posts != null) {
                adapter = new DynamicListAdapter(
                    main.this, posts
            lstPosts.setAdapter(adapter);
            adapter.notifyDataSetChanged();

            //btnState.setPressed(true);
        }

----------------------------------自定义适配器类

    viewHolder.btnVoting.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
 final Dialog d = new Dialog(activity);
                d.requestWindowFeature(Window.FEATURE_NO_TITLE);
                d.setContentView(R.layout.voteselectornew);
                Button btnCategoryCancel = (Button) d
                .findViewById(R.id.btnCategoryCancel);

        Button twcVote = (Button) d
                .findViewById(R.id.btnTwcVote);

        twcVote.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                String confirm = web
                .addTwcVote(UserSessionKey, Userlist.get(position).contentid);


                if (confirm.contains("Successfully")) {

d.dismiss();

}

2 个答案:

答案 0 :(得分:4)

您必须通知ListView适配器数据已更改。

listViewAdapater.notifyDataSetChanged();

你可以通过带有更新数组的构造函数来重新定义你的适配器。

答案 1 :(得分:3)

调用listview适配器的方法将更改更新为:

adapter.notifyDataSetChanged();