【问题标题】:Refreshing a listview in android在android中刷新列表视图
【发布时间】:2012-02-11 06:22:51
【问题描述】:

我有一个列表视图,其中包含来自 webservice 的值。每个页面仅包含 10 个列表项,第 2 页中的下一个 10 个等。每个列表项都是可点击的,它包含一个主要用于投票的按钮。所以当我单击按钮时列表项 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();

}

【问题讨论】:

标签: android listview


【解决方案1】:

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

listViewAdapater.notifyDataSetChanged();

您可以通过构造函数使用更新后的数组重新释放您的适配器。

【讨论】:

    【解决方案2】:

    调用您的列表视图适配器的方法以将更改更新为:

    adapter.notifyDataSetChanged();
    

    【讨论】:

    • 我应该为此检查任何条件吗?
    • 投票操作完成后,只需更新适配器类中使用的数据,然后调用适配器的 notifyDataSetChanged 自动更新列表中的视图
    • 对不起,我问我应该把这段代码放在哪里?列表视图在活动开始时加载。所以我不知道在哪里放置这个通知。
    • 当你按下按钮时,它的调用操作完成的块,在底部包含它
    • 实际上我的投票按钮在自定义适配器类中。
    猜你喜欢
    • 2011-08-31
    • 2011-05-04
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多