SSS___listview多条目加载、使用okhttp请求网络数据,Glide加载图片
2017-10-22 20:36
1061 查看
今天无聊的时候在做list view多条目加载,整了老半天再出来,所以今天把他总结一下发出来,希望给那些初学者一些便利,话不多说,先来看一下效果
本人只加载了两种条目,其实可以记载很多,但是由于本人懒所以就加载了两条,来看一下代码吧
主方法里就这么点,
再来看一下adapter里面的吧:
最后把依赖也发出来吧
本人只加载了两种条目,其实可以记载很多,但是由于本人懒所以就加载了两条,来看一下代码吧
package com.example.week3demo; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.widget.ListView; import java.io.IOException; import java.util.ArrayList; import java.util.List; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class Main3Activity extends AppCompatActivity { List<Bean.SongListBean> list=new ArrayList<>(); private Request request; Bean bean; String url="http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0"; private Handler handler = new Handler(); ListView listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main3); listview= (ListView) findViewById(R.id.listview); initData(); } private void initData() { OkHttpClient client = new OkHttpClient(); request = new Request.Builder().addHeader("User-Agent", "").url(url).build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Log.d("onFailure", "请求失败"); } @Override public void onResponse(Call call, Response response) throws IOException { if (response.body() != null && response.isSuccessful()) { String result = response.body().string(); bean=Bean.objectFromData(result); list=bean.song_list; handler.post(new Runnable() { @Override public void run() { listview.setAdapter(new MyAdapter(Main3Activity.this, list)); } }); } else { Log.d("onFailure", "请求失败"); } } }); } }
主方法里就这么点,
再来看一下adapter里面的吧:
package com.example.week3demo; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import java.util.ArrayList; import java.util.List; /** * Created by 姜天赐 on 2017/10/21. */ public class MyAdapter extends BaseAdapter { Context context; List<Bean.SongListBean> list = new ArrayList<>(); private ViewHolder1 holder1; private ViewHolder2 holder2; public MyAdapter(Context context, List<Bean.SongListBean> list) { this.context = context; this.list = list; } private final int TYPE_1 = 0;// 类型1 private final int TYPE_2 = 1; //类型2 @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 int getItemViewType(int position) { if (position % 2 == 0) { return TYPE_1; } else { return TYPE_2; } } @Override public int getViewTypeCount() { return 2; } @Override public View getView(int position, View convertView, ViewGroup parent) { holder1 = null; holder2 = null; int type = getItemViewType(position); if (convertView == null) { switch (type) { case TYPE_1: holder1 = new ViewHolder1(); convertView = View.inflate(context, R.layout.main3_item1, null); holder1.image1 = (ImageView) convertView.findViewById(R.id.image1); holder1.biaoti1 = (TextView)convertView .findViewById(R.id.biaoti1); holder1.xiaobiaoti1 = (TextView)convertView .findViewById(R.id.xiaobiaoti1); holder1.shijian1 = (TextView)convertView .findViewById(R.id.shijian1); convertView.setTag(holder1); break; case TYPE_2: holder2=new ViewHolder2(); convertView = View.inflate(context, R.layout.main3_item2, null); holder2.biaoti2 = (TextView)convertView .findViewById(R.id.biaoti2); holder2.shijian2 = (TextView)convertView .findViewById(R.id.shijian2); holder2.xiaobiaoti2 = (TextView)convertView .findViewById(R.id.xiaobiaoti2); convertView.setTag(holder2); break; default: break; } } switch (type) { case TYPE_1: holder1 = (ViewHolder1) convertView.getTag(); Glide.with(context).load(list.get(position).pic_big).into(holder1.image1); holder1.biaoti1.setText(list.get(position).si_proxycompany); holder1.xiaobiaoti1.setText(list.get(position).album_title); holder1.shijian1.setText("时间" + list.get(position).publishtime); break; case TYPE_2: holder2 = (ViewHolder2) convertView.getTag(); holder2.biaoti2.setText(list.get(position).si_proxycompany); holder2.xiaobiaoti2.setText(list.get(position).album_title); holder2.shijian2.setText("时间" + list.get(position).publishtime); break; default: break; } return convertView; } public static class ViewHolder1 { public ImageView image1; public TextView biaoti1; public TextView xiaobiaoti1; public TextView shijian1; } class ViewHolder2 { public TextView biaoti2; public TextView xiaobiaoti2; public TextView shijian2; } }
最后把依赖也发出来吧
compile 'com.google.code.gson:gson:2.8.2' compile 'com.github.bumptech.glide:glide:4.0.0' compile 'com.squareup.okhttp3:okhttp:3.9.0'
相关文章推荐
- 使用recyclerview多条目加载代替listview okhttp请求网路 Glide加载图片
- Android studio请求网络数据ListView异步加载展示文字条目 ImageLoadler加载图片
- Android使用OKHTTP网络框架请求数据,RecyclerView结合Glide展示图片,瀑布流布局样式
- 使用OkHttp网络请求+Fresco图片显示把请求到的数据展示到ListView上
- recyclerview+okhttp+glide实现网络请求加载图片列表
- 使用MVP+Retrofit+RxJava 图片加载使用Fresco 做网络请求并展示数据
- MVP框架+RXJava+reftorfit请求网络数据+XRecycleView多条目展示(banner轮播+条目展示、刷新加载)、点击事件+fresco图片加载
- 使用Kotlin进行网络请求+Glide加载图片
- OkHttp的网络请求数据和RecyclerView的多条目加载,添加分割线
- (原创)使用AsyncTask(带修改线程池方式)+自定义ImageLoader+LRU算法对图片三级缓存及其显示优化(只有在ListView滑动停止的时候才去网络请求获取图片数据)
- Android控件使用—Listview加载网络数据、图片并跳转传值
- okhttp + RecycleView + Glide 请求网络数据及图片
- 使用glide图片加载框架将网络图片展示并在listview中
- 封装项目整体架构,访问网络数据,展示列表数据,根据图片数量的不同来多条目加载,使用Universal-Image-Loader进行图片加载
- 使用MVP+Retrofit+RxJava 图片加载使用Fresco 做网络请求并展示数据
- ListView多条目展示 请求网络数据 和图片
- handle发送get和post请求网络数据+多条目加载+banner+xlistview+TabLayout
- 使用okhttp加载服务器数据,Glide加载图片
- Kotlin新语言使用RxJava+Retrofit请求网络数据+lambda表达式+RecyclerView展示+Glide展示图片
- ExpandableListView使用,点击条目请求网络数据,箭头在右边