您的位置:首页 > 移动开发 > Android开发

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

2016-05-22 16:35 477 查看
服务器端代码
Bookjavabean和app端保持一致

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

app端请求的urlhttp1151591521798080BaidudemoservletTest

android端
Adapter

服务器端代码:

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);

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: