Android 点击Button更新接口数据刷新页面状态
2015-12-05 16:58
405 查看
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();
②请求数据成功后获取数据内容 ③ 先清除集合数据 再在获取内容后设置适配器,刷新适配器
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", c 4000 rypt.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; } } }
相关文章推荐
- Android 获取系统状态栏的高度
- android 引用资源时,?android和@android的区别
- android(26)(使用开源框架xutils实现多线程断点下载)
- 【已解决】Android Studio项目编译出错,可以运行
- Android6.0 源码编译 + AS阅读源码
- android中截图并保存本地
- android decorview
- Android layout_weight详解
- android(25)(android下实现多线程断点下载)
- Android控件之Gallery
- 【Material Design学习研究 一】个人对Material Design的理解和看法!
- Android控件之TimePicker、DatePicker
- Android SDK 开发范例大全 ---3.13置换文字颜色的机关
- android 自定义无限循环播放的viewPager。轮播ViewPager。实现循环播放 广告,主题内容,活动,新闻内容时。
- android studio 用git把项目推到bitbucket仓库
- Android 学习路线(参考)
- Android测试教程12--模拟读取的文件/数据库
- Android广播动态注册重复注册问题
- Android5.0推出的替换listView的控件recyclerview
- android makefile文件(Android.mk)组织结构解析