留言栏

参考链接:4个小时做一个留言栏


基本功能:

  • 刷新获取网络数据,并用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() {
                   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 list;
    public madapter(List 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);

    留言栏_第1张图片
    留言栏_第2张图片

你可能感兴趣的:(Android)