Hander和HttpURLConnection和Gson解析網路資料設定listView
阿新 • • 發佈:2018-12-21
try { URL url=new URL("http://172.17.8.100/movieApi/movie/v1/findHotMovieList?page=1&count=10"); HttpURLConnection connection= (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(3000); if (connection.getResponseCode()==200){ InputStreamReader inputStreamReader=new InputStreamReader(connection.getInputStream()); BufferedReader reader=new BufferedReader(inputStreamReader); String str=""; String str1=""; while ((str=reader.readLine())!=null){ str1+=str; } Message message=Message.obtain(); message.obj=str1; handler.sendMessage(message); } } catch (Exception e) { e.printStackTrace(); }
解析
Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); String srr= (String) msg.obj; Gson gson=new Gson(); User user = gson.fromJson(srr, User.class); list.addAll(user.getResult()); MyAdapter myAdapter=new MyAdapter(list,MainActivity.this); listView.setAdapter(myAdapter); } };
設定介面卡和ViewHolder優化
private ArrayList<User.resultbase> list; private Context context; public MyAdapter(ArrayList<User.resultbase> list, Context context) { this.list = list; this.context = context; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder=null; if (convertView==null){ convertView=View.inflate(context,R.layout.item_list,null); holder=new ViewHolder(); holder.image=convertView.findViewById(R.id.image); holder.text1=convertView.findViewById(R.id.text1); holder.text2=convertView.findViewById(R.id.text2); convertView.setTag(holder); }else { holder= (ViewHolder) convertView.getTag(); } holder.text1.setText(list.get(position).getName()); holder.text2.setText(list.get(position).getSummary()); Picasso.with(context).load(list.get(position).getImageUrl()).into(holder.image); return convertView; } class ViewHolder{ ImageView image; TextView text1,text2; }