Android 从服务器获取信息 并显示 (包含服务器端代码)


服务器端代码:

Book(javabean和app端保持一致)

package com.shengsheng.mhandler;
/**
 * Created by Administrator on 2016/5/15.
 * 椹壇鏉鹃紶
 */
public class Book {
    private int bookid;
    private double price;
    private String name;
    private String imgUrl;
    public int getBookid() {
        return bookid;
    }
    public void setBookid(int bookid) {
        this.bookid = bookid;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double d) {
        this.price = d;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getImgUrl() {
        return imgUrl;
    }
    public void setImgUrl(String imgUrl) {
        this.imgUrl = imgUrl;
    }



}

将书籍信息的list转换成json 生成gson数据

public class Test extends HttpServlet {

    /**
     * The doGet method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to get.
     * 
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        response.setCharacterEncoding("utf-8");

        List<Book> list = new ArrayList<Book>();
        // 初始化100条数据
        for (int i = 0; i < 30; i++) {
            Book book = new Book();
            book.setBookid(i);
            book.setName("商品名称" + i);
            book.setPrice(i + 20.0);
            book.setImgUrl("Baidudemo/images/a3.jpg");

            list.add(book);
        }

        Gson gson = new Gson();
        String recuits = gson.toJson(list);
        JSONObject jsonORG = new JSONObject();


        jsonORG.put("recruits", recuits);
        jsonORG.put("code", 200);
        String jsonString = jsonORG.toString();
        System.out.println("招聘信息为:" + jsonString);
        OutputStream os = response.getOutputStream();
        os.write(jsonString.getBytes("utf-8"));
        os.close();
    }

    /**
     * The doPost method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to post.
     * 
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

}

app端请求的url:http://115.159.152.179:8080/Baidudemo/servlet/Test


android端

思路:用Httpurlconnection 建立get请求 得到json字符串 解析json 得到
List<Book> 然后设置适配器展示数据

public class MainActivity extends AppCompatActivity {
    private RecyclerView mRecyclerViewBook;
    private List<Book> books;
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            mRecyclerViewBook.setAdapter(new MyAdaptr(MainActivity.this,books));
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mRecyclerViewBook = (RecyclerView) findViewById(R.id.rvBook);
        mRecyclerViewBook.setLayoutManager(new GridLayoutManager(this, 2));
        //开启子线程 
       new Thread(){
           @Override
            public void run() {
               super.run();
                getDataForServer("http://49.122.47.217:8080/Baidudemo/servlet/Test");
            }
        }.start();
    }

    }
    /**
     *HttpURLConnection
     * 从服务器获取 图书商品列表信息
     */
    public void getDataForServer(String urlstr) {
        try {
            URL url=new URL(urlstr);
            HttpURLConnection conn= (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            if(conn.getResponseCode()==200){
                //得到的是输入流 转换成json字符串
                InputStream in=conn.getInputStream();
                String result=StreamUtils.readStread(in);
                //解析json字符串
                JSONObject jsonboject=new JSONObject(result);
                String code=jsonboject.getString("code");
                String recruits=jsonboject.getString("recruits");
                //用GSON 解析集合
                Gson gson=new Gson();
                 books=gson.fromJson(recruits,new TypeToken<List<Book>>(){}.getType());
                handler.sendEmptyMessage(1);
//

            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }


}

Adapter

package cn.zsp.bookdemo;

import android.app.Activity;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;

import java.util.List;

/**
 * 项目名称:BookDemo
 * 类描述:
 * 创建人:my
 * 创建时间:2016/5/22 14:52
 * 修改人:my
 * 修改时间:2016/5/22 14:52
 * 修改备注:
 */
public class MyAdaptr extends RecyclerView.Adapter<MyAdaptr.MyHolder> {
    private Activity mActivity;
    private List<Book>  mBookList;
    public MyAdaptr(Activity activity, List<Book> books){
        mActivity=activity;
        mBookList=books;
    }
    @Override
    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(mActivity).inflate(R.layout.recycleview_book_item,parent,false);
        return new MyHolder(view);
    }

    @Override
    public void onBindViewHolder(MyHolder holder, int position) {
        Book book=mBookList.get(position);
        holder.tvName.setText(book.getName());
        holder.tvPrice.setText(book.getPrice()+"");
        //使用Glide 加载网络图片
        Log.e("zsp", book.getImgUrl() );
        Glide.with(mActivity).load("http://49.122.47.217:8080/"+book.getImgUrl()).into(holder.ivPhoto);
    }
    @Override
    public int getItemCount() {
        return mBookList.size();
    }

    class MyHolder extends  RecyclerView.ViewHolder{
        private ImageView ivPhoto;
        private TextView tvName;
        private TextView tvPrice;
        public MyHolder(View itemView) {
            super(itemView);
            ivPhoto= (ImageView) itemView.findViewById(R.id.ivPhoto);
            tvName= (TextView) itemView.findViewById(R.id.tvName);
            tvPrice= (TextView) itemView.findViewById(R.id.tvPrice);

        }
    }
}
  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值