Volley+ListView制作留言栏
来源:互联网 发布:js变量命名的规则 编辑:程序博客网 时间:2024/06/11 18:22
功能:下拉刷新加载留言+上传留言。
实现:Volley 获取/上传 数据,handler实现异步消息处理,JSON解析,自定义Adapter将数据填入ListView中,SwipeRefreshLayout下拉刷新。
请求接口:http://mclee.cn/getJson.php
上传接口:http://mclee.cn/postJson.php
1)Volley框架—— 获取/上传 数据
Volley是一个网络通信框架,适合进行数据量不大,但网络通信频繁的网络操作。
1.获取数据
①导入Volley的jar包:在build.grade中添加
`compile'com.android.volley:volley:1.0.0'`
②获取RequestQueue对象:
RequestQueue rQueue = Volley.newRequestQueue(MainActitvity.this);
③创建StringRequest对象:
StringRequest stringRequest = new StringRequest("http://mclee.cn/getJson.php",new Response.Listener<String>(){ public void onResponse(String response){ Message message = handler.obtainMessage(); message.what=1; message.obj = response; handler.sendMessage(message); }},new Response.ErrorListener(){ public void onErrorResponse(VolleyError error){ handler.sendEmptyMessage(0); }});
④将StringRequest对象添加到RequestQueue里:
rQueue.add(StringRequest);
⑤在AndroidManifest.xml中添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
2.上传数据
putMessage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { RequestQueue requestQueue = Volley.newRequestQueue(PostMessage.this); StringRequest request = new StringRequest(Request.Method.POST,"http://mclee.cn/postJson.php", new Response.Listener<String>() { @Override public void onResponse(String response) { } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }){ @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String,String> map = new HashMap<String, String>(); String result = eText.getText().toString(); map.put("json",result); return map; } }; requestQueue.add(request); } });
2)JSON数据解析
Handler handler = new Handler(){ public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 1: JSONArray array = new JSONArray((String)msg.obj); for (int i =0;i<array.length();i++){ JSONObject object = array.getJSONObject(i); String result = object.getString("message"); list.add(result); } lv.setAdapter(new Adapter(MainActivity.this,list)); break; case 0: Toast.makeText(MainActivity.this,"网络异 常",Toast.LENGTH_SHORT).show(); break; } }};
3)自定义Adapter,向ListView中填入数据
public class Adapter extends BaseAdapter { private TextView textView; private List<String> list; private Context context ; public Adapter (Context context, List<String> list){ this.list = list; this.context = context; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = LayoutInflater.from(context).inflate(R.layout.item,null); textView=(TextView)view.findViewById(R.id.text); textView.setText(list.get(position)); return view; }}
新建Adapter类继承自BaseAdapter,重写构造方法和默认方法,这里将数据存入list中。
· getCount():返回ListView中要显示的子View数量,只要返回list的条目数就可以了。
· getItem(int position):返回ListView中的一个子条目,这里取list中的一条数据。
· getItemId(int position):根据ListView中的位置返回id。
· getView(int position, View convertView, ViewGroup parent):返回这个条目的整个信息,它是一个单独的布局文件。通过LayoutInflater类的inflate()方法可以根据布局文件获得其View返回值,再对子组件进行设置。
效果图:
0 0
- Volley+ListView制作留言栏
- Flash留言本制作详解
- 超级留言本制作实例
- PHP+Mysql制作留言发布
- jsp制作简易留言版
- 留言栏
- 留言栏
- 制作PHP留言本全过程[图]-查看留言
- 制作PHP留言本全过程[图]-添加留言
- 制作WAP留言本[ASP教程]
- 制作WAP留言本[ASP教程]
- 制作WAP留言本[ASP教程]
- Flash+PHP+Mysql简单留言本制作
- 超级留言本制作实例 阿余
- PHP小实例-制作留言本
- 个人网站评论留言区制作
- Html5 使用SUI制作留言信息
- 留言:
- RuntimeError: Model class models.Seller doesn't declare an explicit app_label and isn't in an applic
- CSS中伪类及伪元素用法详解
- 如何利用Python对中文进行分词处理
- Android悬浮窗置于任务栏之上
- 让服务器能支持10万并发数秘诀,亲身经历,站在巨人的肩膀上创造
- Volley+ListView制作留言栏
- Spring2 Bean详解
- sklearn——PCA&LDA
- 二叉查找树
- DataX配置定时任务
- 换个账号继续
- 开发程序员常用接口
- linux IO复用笔记_更新中
- 查看keystore相关信息