public class MainActivity extends AppCompatActivity { private ListView lv; private List<Da.DataBean> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 找控件 lv = (ListView) findViewById(R.id.lv); list = new ArrayList<Da.DataBean>(); // 初始化数据 initData(); } private void initData() { new AsyncTask<String,Integer,String>(){ @Override protected void onPostExecute(String s) { // 设置适配器 MyAdapter adapter = new MyAdapter(); lv.setAdapter(adapter); super.onPostExecute(s); } @Override protected String doInBackground(String... strings) { getData(); // ImageLoader ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(MainActivity.this); ImageLoader.getInstance().init(configuration); return null; } }.execute(); } private void getData() { try { // 请求网络数据 URL url = new URL("http://"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); int code = conn.getResponseCode(); if(code == 200){ Gson gson = new Gson(); Da da = gson.fromJson(new InputStreamReader(conn.getInputStream(),"GBK"),Da.class); list = da.getData(); } } catch (Exception e) { e.printStackTrace(); } } // 优化适配器 class MyAdapter extends BaseAdapter{ public static final int TYPE_ONE = 1; public static final int TYPE_TWO = 2; public static final int TYPE_THREE = 3; // 在使用多条目加载的时候 返回当前position对应的类型 // ************必须满足的条件 getItemViewType的返回值 必须要小于getViewTypeCount的返回值 @Override public int getItemViewType(int position) { if(list.get(position).getType() == 10001){ return TYPE_ONE; }else if(list.get(position).getType() == 10002){ return TYPE_TWO; }else{ return TYPE_THREE; } } // 使用多条目加载时 一共有几种类型 // 从写该方法后,listview控件会知道 当前的布局样式不止一种 // 所以 当ListView发现convertview在复用时 类型匹配不上时 会重新让convertView加载一遍布局 @Override public int getViewTypeCount() { return 5; } @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 view, ViewGroup viewGroup) { ViewHolder1 holder1 = null; ViewHolder2 holder2 = null; ViewHolder3 holder3 = null; int type = getItemViewType(position); if(view == null){ if(type == TYPE_ONE) { view = View.inflate(MainActivity.this, R.layout.item1, null); holder1 = new ViewHolder1(); holder1.news_id1 = view.findViewById(R.id.tv1_id); holder1.news_title1 = view.findViewById(R.id.tv1_title); holder1.news_summary1 = view.findViewById(R.id.tv1_summary); holder1.pic_url1 = view.findViewById(R.id.iv1); view.setTag(holder1); }else if(type == TYPE_TWO){ view = View.inflate(MainActivity.this, R.layout.item2, null); holder2 = new ViewHolder2(); holder2.news_id2 = view.findViewById(R.id.tv2_id); holder2.news_title2 = view.findViewById(R.id.tv2_title); holder2.news_summary2 = view.findViewById(R.id.tv2_summary); holder2.pic_url2 = view.findViewById(R.id.iv2); view.setTag(holder2); }else{ view = View.inflate(MainActivity.this, R.layout.item3, null); holder3 = new ViewHolder3(); holder3.news_id3 = view.findViewById(R.id.tv3_id); holder3.news_title3 = view.findViewById(R.id.tv3_title); holder3.news_summary3 = view.findViewById(R.id.tv3_summary); holder3.pic_url3 = view.findViewById(R.id.iv3); view.setTag(holder3); } }else{ if(type == TYPE_ONE){ holder1 = (ViewHolder1) view.getTag(); }else if(type == TYPE_TWO){ holder2 = (ViewHolder2) view.getTag(); }else{ holder3 = (ViewHolder3) view.getTag(); } } // 根据不同的情况 把进行赋值 if(type == TYPE_ONE) { holder1.news_id1.setText(list.get(position).getNews_id()); holder1.news_title1.setText(list.get(position).getNews_title()); holder1.news_summary1.setText(list.get(position).getNews_summary()); ImageLoader.getInstance().displayImage(list.get(position).getPic_url(),holder1.pic_url1); }else if(type == TYPE_TWO){ holder2.news_id2.setText(list.get(position).getNews_id()); holder2.news_title2.setText(list.get(position).getNews_title()); holder2.news_summary2.setText(list.get(position).getNews_summary()); ImageLoader.getInstance().displayImage(list.get(position).getPic_url(),holder2.pic_url2); }else{ holder3.news_id3.setText(list.get(position).getNews_id()); holder3.news_title3.setText(list.get(position).getNews_title()); holder3.news_summary3.setText(list.get(position).getNews_summary()); ImageLoader.getInstance().displayImage(list.get(position).getPic_url(),holder3.pic_url3); } return view; } } public static class ViewHolder1{ TextView news_id1,news_title1,news_summary1; ImageView pic_url1; } public static class ViewHolder2{ TextView news_id2,news_title2,news_summary2; ImageView pic_url2; } public static class ViewHolder3{ TextView news_id3,news_title3,news_summary3; ImageView pic_url3; } }
ListView多条目展示 请求网络数据 和图片
最新推荐文章于 2018-04-14 16:25:00 发布