基本功能:
- 刷新获取网络数据,并用listview显示出来
- 点击按钮跳转到发送页面
- 在发送页面编辑文本上传
- 上传之后的数据,在获取列表中显示
基本步骤:
- 在下拉刷新区内,创建请求队列
- 创建字符请求对象
把请求对象加入到请求队列中
由于UI线程不安全,所以不能直接在responselistener中向主界面传入数据,所以设置消息传送handler,用来从子线程向UI线程传送数据
handler用法:(子线程)
Message message=handler.obtainMessage();
message.what=1;
message.obj=response;
handler.sendMessage(message);
(主线程)`handler = new Handler(){
@Override
public void handleMessage(Message msg)- 获取数据
RequestQueue requestQueue= Volley.newRequestQueue(MainActivity.this);
StringRequest stringRequest=new StringRequest("http://mclee.cn/getJson.php"//下载接口
,new Response.Listener<String>() {
public void onResponse(String response) {
Log.d("111111","对对对");
Message message=handler.obtainMessage();
message.what=1;
message.obj=response;
handler.sendMessage(message);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
handler.sendEmptyMessage(0);
Log.d("222222","错错错");
}
});
requestQueue.add(stringRequest);
- 上传数据
StringRequest request=new StringRequest(Request.Method.POST, "http://mclee.cn/postJson.php"//上传接口
, new Response.Listener<String>() {
@Override
public void onResponse(String s) { }}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Log.d("2222","错误");
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map=new HashMap<String, String>();
map.put("json",editText.getText().toString());
return map;
}
- 切换活动页面
Intent i=new Intent();
i.setClass(MainActivity.this,PostActivity.class);
startActivity(i);
- 自定义listview
public class madapter extends BaseAdapter{//自定义的madapter,这里使用不规范,类名要大写MyAdapter
public Context context=null;
private List<String> list;
public madapter(List<String> list,Context context){
this.list=list;
this.context=context;
}
@Override
public int getCount() {//获得listview的长度
return list.size();
}
@Override
public Object getItem(int i) {
return list.get(i);//获取listview中每一条的内容
}
@Override
public long getItemId(int i) {
return i;//获取每一项的id
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {//用inflater绑定子布局cinvertview,返回子布局
View convertview= LayoutInflater.from(context).inflate(R.layout.listview_item, null);
TextView textView= (TextView) convertview.findViewById(R.id.tv1);
textView.setText(list.get(i));
return convertview;
}}
- listview在主布局的引用
madapter m=new madapter(list,MainActivity.this);
listView.setAdapter(m);