android 排行榜中异步加载头像图片
Posted 孤注一掷 、
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 排行榜中异步加载头像图片相关的知识,希望对你有一定的参考价值。
排行榜用的是RecyclerView显示,适配器使用BaseQuickAdapter,效果如下
1.RecycylerView适配器的使用
先引入依赖,然后新建类RegionList2Adapter继承基类
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.46'//RecyclerView适配器
//当前使用的战区列表适配器
public class RegionList2Adapter extends BaseQuickAdapter<RegionUser, BaseViewHolder> {
public RegionList2Adapter(int layoutResId, @Nullable List<RegionUser> data) {
super(layoutResId, data);
}
@Override
protected void convert(BaseViewHolder helper, RegionUser item) {
//先赋值默认的Bitmap
helper.setText(R.id.user_number,item.getNumber().toString())
.setText(R.id.user_combatPower,item.getCombatPower().toString());
((ImageView)helper.getView(R.id.user_image)).setImageBitmap(item.getImageId());
JMessageClient.getUserInfo(item.getPhone(), new GetUserInfoCallback() {
@Override
public void gotResult(int i, String s, UserInfo userInfo) {
if(i==0){
userInfo.getAvatarBitmap(new GetAvatarBitmapCallback() {
@Override
public void gotResult(int i, String s, Bitmap bitmap) {
if(i==0){
//赋值头像
((ImageView)helper.getView(R.id.user_image)).setImageBitmap(bitmap);
}
}
});
//如果有用户名
if(TextUtils.isEmpty(userInfo.getNickname())){
helper.setText(R.id.user_name,userInfo.getUserName());
}else{
helper.setText(R.id.user_name,userInfo.getNickname());
}
}
}
});
}
}
其中JMessageClient.getUserInfo()等是异步获取,这个适配器相当于每个item单独加载,正好适用于异步加载。
2.在Activity中
RecyclerView recyclerView = view.findViewById(R.id.recycler_view_3);
LinearLayoutManager layoutManager = new LinearLayoutManager(this.getActivity());
recyclerView.setLayoutManager(layoutManager);
...
...
//循环得到List<RegionUser>,赋给适配器regionList2Adapter
for (UserListInfo userListInfo:userListInfos){
RegionUser regionUser1=new RegionUser(
userListInfos.indexOf(userListInfo)+1,
userListInfo.getUname(),
bitmap, //默认的图片
userListInfo.getCombatPower(),
userListInfo.getPhone());
regionUsers.add(regionUser1);
}
RegionList2Adapter regionList2Adapter = new
RegionList2Adapter(R.layout.region_user_item,regionUsers);
recyclerView.setAdapter(regionList2Adapter);
3.region_user_item.xml布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/bg_username"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="8dp">
<RelativeLayout
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_gravity="center_vertical">
<LinearLayout
android:layout_width="50dp"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:id="@+id/user_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="23sp" />
</LinearLayout>
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/user_image"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginLeft="55dp" />
</RelativeLayout>
<TextView
android:id="@+id/user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textSize="18sp"
android:layout_marginLeft="10dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="right|center_vertical">
<TextView
android:id="@+id/user_combatPower"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_marginRight="20dp" />
</LinearLayout>
</LinearLayout>
借鉴文章:
Android开发丶万能适配器BaseQuickAdapter和刷新控件SmartRefreshLayout搭配Recyclerview实现列表界面
https://www.shangmayuan.com/a/c182a6aef10b4a5d912265cf.html
以上是关于android 排行榜中异步加载头像图片的主要内容,如果未能解决你的问题,请参考以下文章