Android 从服务器获取信息 并显示 (包含服务器端代码)
2016-05-22 16:35
477 查看
服务器端代码
Bookjavabean和app端保持一致
将书籍信息的list转换成json 生成gson数据
app端请求的urlhttp1151591521798080BaidudemoservletTest
android端
Adapter
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); } } }
相关文章推荐
- Android studio下的自定义属性的使用
- Android热更新之so库的热更新
- 【AndroidProject】andriod 带看括弧的计算器
- android中常用的小技巧
- android json数据的解析
- Android Studio各种类型乱码处理
- android 4.2的新特性layoutRtl,让布局自动从右往左显示
- Android Studio中进行ActionBar开发需要注意问题
- Android OpenGL ES 开发教程 从入门到精通
- android异步初级
- Android适配文件夹的创建
- Android开发实践 Service
- This Handler class should be static or leaks might occur 解决办法
- Android自定义随手势滑动的滚动条实现——HorizontalScrollCursor
- Android系统常用的权限
- 我的第一个博客测试
- 作业——在线学习Android课程之第十二周(内存、视图、电量优化)
- 64位Ubuntu 14.04上使用musleabi最小化交叉编译Android版PHP7
- Android Studio does not point to a valid jvm
- android中对json解析(上传数据以及解析返回值)