ListView多条目展示 请求网络数据 和图片
2017-08-10 17:05
537 查看
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< 4000 /span>(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); < bc39 /span> }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; } }
相关文章推荐
- Android studio请求网络数据ListView异步加载展示文字条目 ImageLoadler加载图片
- SSS___listview多条目加载、使用okhttp请求网络数据,Glide加载图片
- MVP框架+RXJava+reftorfit请求网络数据+XRecycleView多条目展示(banner轮播+条目展示、刷新加载)、点击事件+fresco图片加载
- ListView展示 网络请求的数据, 并LoaderImage请求网络图片
- 使用OkHttp网络请求+Fresco图片显示把请求到的数据展示到ListView上
- 侧拉+xlistview+多条目展示+请求数据+tablayout+viewpager+Imageloder
- 请求网络数据并listview优化展示
- xlistview上下拉展示数据+点击条目选择网络+下载APK
- 点击侧滑任何一个 菜单项,请求网络数据展示在主界面的xlistview中且实现下拉刷新效果和上拉加载的分页加载数据效果
- 网络数据请求展示为无限轮播图 ViewPager+XListView+Fragment+ImageLoader
- MVP+Retrofit+RxJava请求网络数据实现RecyclerView多条目展示
- 封装项目整体架构,访问网络数据,展示列表数据,根据图片数量的不同来多条目加载,使用Universal-Image-Loader进行图片加载
- listview展示网络新闻类条目包括图片
- android MVP+Retrofit2.0与RxJava网络请求数据,listview展示
- xListView主页面请求网络数据展示到listView的三个步骤
- 文章标题 listview网络请求数据展示
- Retrofit网络请求+Recyclerview展示数据+Fresco显示图片
- OkHttp请求网络数据,并listview展示
- 网络数据请求XListView展示
- 关于listview中图片切圆,网络请求数据,并Gson解析后得到list