留言栏

来源:互联网 发布:java界面编程实例 编辑:程序博客网 时间:2024/05/21 07:59

参考链接: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<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>() {   @Overridepublic void onResponse(String s) { }}, new Response.ErrorListener() {     @Override  public void onErrorResponse(VolleyError volleyError) {     Log.d("2222","错误");     } }){  @Overrideprotected 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);

    获取数据
    上传数据
原创粉丝点击