Android 点击Button更新接口数据刷新页面状态

本文介绍了如何在Android应用中,当用户点击Button时,通过调用接口更新数据,并随之刷新ListView的内容。主要步骤包括:①触发请求更新数据接口;②成功获取数据后清除原有集合;③将新数据设置给适配器并刷新界面。示例代码展示了具体的实现过程。

1、当我们使用View的点击事件,请求接口数据并更新数据,使ListView的状态发生改变(如文字颜色,图片样式),代表功能有一键阅读消息,签到记录数据列表。当我们点击view事件,①请求更新数据接口
②请求数据成功后获取数据内容 ③ 先清除集合数据 再在获取内容后设置适配器,刷新适配器

Acitivity界面`
package com.renqidai.android.ui;

import android.content.Intent;
import android.os.Bundle;
import android.text.Html;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.andexert.library.RippleView;
import com.renqidai.android.R;
import com.renqidai.android.constants.UrlConsts;
import com.renqidai.android.pojo.Latter;
import com.renqidai.android.pojo.UserInfo;
import com.renqidai.android.task.PostRequestTask;
import com.renqidai.android.task.TaskExecutor;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;

/**
* Created by SONY-SONG on 2015/3/30.
*/
public class LatterActivity extends BaseActivity implements AdapterView.OnItemClickListener, View.OnClickListener {
public static final String TAG = LatterActivity.class.getSimpleName();

private ListView lv_latters;
private ImageView iv_latter;
private RippleView back;
private TextView title_name;
private ArrayList<Latter> latters = new ArrayList<>();
private LatterAdapter adapter;
private UserInfo info;
private TextView readAll;
private RippleView readAllData;
private LatterActivity activity;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_latter);
    activity=this;
    if (application.isLogin()) {
        info = application.getUserInfo();
    } else {
        startActivity(new Intent(this, LoginActivity.class));
        finish();
    }
    initViews();
    setListeners();
    getLatterData();
    adapter = new LatterAdapter();
}

@Override
protected void onResume() {
    super.onResume();

}

private void initViews() {
    title_name = serchViewById(R.id.title);
    title_name.setText(getString(R.string.My_message));
    lv_latters = serchViewById(R.id.lv_latters);


    back = serchViewById(R.id.back);
    back.setOnRippleCompleteListener(new RippleView.OnRippleCompleteListener() {
        @Override
        public void onComplete(RippleView rippleView) {
            finish();
            overridePendingTransition(R.anim.r2l_in, R.anim.r2l_out);
        }
    });

    readAll = ((TextView) findViewById(R.id.recharge));
    readAll.setText("一键全部阅读");
    readAllData = ((RippleView) findViewById(R.id.rightripple));
    readAllData.setOnClickListener(this);
    readAllData.setVisibility(View.VISIBLE);
}

 *  //一键阅读点击事件

    @Override
    public void onClick(View v) {
        adapter.notifyDataSetChanged();
        HashMap<String, String> params = new HashMap<>();
        params.put("token", crypt.encrypt(info.token));
        params.put("offset", crypt.iv);
        TaskExecutor.getInstance().execute(new PostRequestTask(params, this, UrlConsts.LATTER_READALL) {
            @Override
            protected void handleResponse(String response) {
                Log.e("wu", "一键阅读" + response);
                try {
                    JSONObject object = new JSONObject(response);
                    int ret = object.getInt("Ret");
                    if (ret == 0) {
                        for (int i = 0; i < latters.size(); i++) {
                            Latter latter = latters.get(i);
                            if (!latter.isRead) {
                                HashMap<String, String> params = new HashMap<>();
                                params.put("token", crypt.encrypt(info.token));
                                params.put("id", crypt.encrypt(latter.id));
                                params.put("offset", crypt.iv);
                                Log.e("zhi", UrlConsts.LATTER_READ + "?token=" + crypt.encrypt(info.token) + "&id=" + latter.id);
                                TaskExecutor.getInstance().execute(new PostRequestTask(params, activity, UrlConsts.LATTER_READ) {
                                    @Override
                                    protected void handleResponse(String response) {
                                        getLatterData();
                                    }

                                    @Override
                                    protected void handleError() {
                                        super.handleError();
                                    }
                                });
                            }
                        }

                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }

            @Override
            protected void handleError() {
                super.handleError();
            }
        });
    }
  private void setListeners() {
        lv_latters.setOnItemClickListener(this);

    }
//请求数据
    public void getLatterData() {
        latters.clear();//先要清除集合内容***
        HashMap<String, String> params = new HashMap<>();
        params.put("token", crypt.encrypt(info.token));
        params.put("pageIndex", crypt.encrypt(String.valueOf(1)));
        params.put("pageSize", crypt.encrypt(String.valueOf(10000)));
        params.put("offset", crypt.iv);
        showSpotsDialog("加载信件...");
        TaskExecutor.getInstance().execute(new PostRequestTask(params, this, UrlConsts.LATTER) {
            @Override
            protected void handleError() {
                closeSpotsDialog();
            }

            @Override
            protected void handleResponse(String response) {
                try {
                    Log.e("LatterActivity",response);
                    JSONObject obj = new JSONObject(response);
                    int ret = obj.getInt("Ret");
                    if (ret == 0) {
                        JSONArray array = obj.getJSONArray("Data");
                        for (int i = 0; i < array.length(); i++) {
                            obj = array.getJSONObject(i);
                            Latter latter = new Latter();
                            latter.parsefromJSON(obj.toString());
                            latters.add(latter);
                        }
                        //设置适配器***
                        lv_latters.setAdapter(adapter);
                        adapter.notifyDataSetChanged();
                    } else {
                        throw new Exception();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    closeSpotsDialog();
                }
            }
        });
    }
 View preView;

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (preView != null) {
            AdapterHolder preholder = (AdapterHolder) preView.getTag();
            preholder.tv_latter_content.setVisibility(View.GONE);
        }
        final AdapterHolder holder = (AdapterHolder) view.getTag();
        if (preView == view) {
            holder.tv_latter_content.setVisibility(View.GONE);
            preView = null;
        } else {
            holder.tv_latter_content.setVisibility(View.VISIBLE);
            preView = view;
            Latter latter = latters.get(position);
            if (!latter.isRead) {
            //更新内容
                HashMap<String, String> params = new HashMap<>();
                params.put("token", crypt.encrypt(info.token));
                params.put("id", crypt.encrypt(latter.id));
                params.put("offset", crypt.iv);
                Log.e("zhi", UrlConsts.LATTER_READ+"?token="+crypt.encrypt(info.token) + "&id="  + latter.id);
                TaskExecutor.getInstance().execute(new PostRequestTask(params, this, UrlConsts.LATTER_READ) {
                    @Override
                    protected void handleResponse(String response) {
                        Log.e("zhi", response);
                        holder.iv_is_read.setImageResource(R.drawable.point_gray);
                        holder.tv_latter_title.setTextColor(LatterActivity.this.getResources().getColor(R.color.latter_title_2));
                    }

                    @Override
                    protected void handleError() {
                        super.handleError();
                    }
                });
            }
        }
    }
static class AdapterHolder {
        ImageView iv_is_read;//消息图片
        TextView tv_latter_time;
        TextView tv_latter_title;
        TextView tv_latter_content;//点击出现内容
    }
 private class LatterAdapter extends BaseAdapter {
        @Override
        public int getCount() {
            return latters.size();
        }

        @Override
        public Object getItem(int position) {
            return latters.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            AdapterHolder holder;
            if (convertView == null) {
                convertView = View.inflate(LatterActivity.this, R.layout.latter_item, null);
                holder = new AdapterHolder();
                holder.iv_is_read = (ImageView) convertView.findViewById(R.id.iv_is_read);
                holder.tv_latter_time = (TextView) convertView.findViewById(R.id.tv_latter_time);
                holder.tv_latter_title = (TextView) convertView.findViewById(R.id.tv_latter_title);
                holder.tv_latter_content = (TextView) convertView.findViewById(R.id.tv_latter_content);
                convertView.setTag(holder);
            } else {
                holder = (AdapterHolder) convertView.getTag();
            }
            Latter latter = latters.get(position);

            holder.iv_is_read.setImageResource(latter.isRead ? R.drawable.point_gray : R.drawable.point_red);
            holder.tv_latter_title.setTextColor(latter.isRead ? LatterActivity.this.getResources().getColor(R.color.latter_title_2) : LatterActivity.this.getResources().getColor(R.color.latter_title_1));
            holder.tv_latter_title.setText(latter.messageTitle);
            holder.tv_latter_time.setText(latter.createTime);
            holder.tv_latter_content.setText(Html.fromHtml(latter.messageContent));
            return convertView;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值