1:适配器布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fresco="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/shapelogin"
android:padding="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_20"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/fragment_circle_sdv_image"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
fresco:roundWithOverlayColor="@android:color/white"
fresco:roundedCornerRadius="8dp" />
<TextView
android:id="@+id/fragment_circle_txt_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/fragment_circle_sdv_image"
android:layout_marginLeft="15dp" />
<TextView
android:id="@+id/fragment_circle_txt_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"/>
</RelativeLayout>
<TextView
android:id="@+id/fragment_circle_txt_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:textSize="12sp" />
<com.bwie.baweishop.utils.recyclerview.RecyclerGridView
android:id="@+id/grid_view"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</com.bwie.baweishop.utils.recyclerview.RecyclerGridView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_30"
android:gravity="right"
android:layout_marginTop="@dimen/dp_20"
android:orientation="horizontal">
<TextView
android:id="@+id/fragment_circle_txt_zan"
android:layout_width="@dimen/dp_20"
android:layout_height="@dimen/dp_20"
android:background="@drawable/zan"/>
<TextView
android:id="@+id/fragment_circle_txt_zannum"
android:layout_width="@dimen/dp_30"
android:layout_height="match_parent"
android:gravity="center"
android:textSize="12sp"
android:layout_marginLeft="@dimen/dp_10"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
2:适配器
public class Fragment_Circle_Adapter extends RecyclerView.Adapter<Fragment_Circle_Adapter.ViewHolder> {
public static final String FORMAT_DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
private Context context;
private List<Circle> list;
public Fragment_Circle_Adapter(Context context) {
this.context = context;
list = new ArrayList<>();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.fragment_circle_recy, null);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
Uri uri = Uri.parse(list.get(position).getHeadPic());
holder.fragmentCircleSdvImage.setImageURI(uri);
holder.fragmentCircleTxtName.setText(list.get(position).getNickName());
//转换成日期格式
SimpleDateFormat dateFormat = new SimpleDateFormat(FORMAT_DATE_TIME_PATTERN,Locale.getDefault());
holder.fragmentCircleTxtDate.setText(dateFormat.format(list.get(position).getCreateTime()));
holder.fragmentCircleTxtContent.setText(list.get(position).getContent());
holder.fragmentCircleTxtZanNum.setText(""+list.get(position).getGreatNum());
holder.fragmentCircleTxtZan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Animation animation = AnimationUtils.loadAnimation(context, R.anim.add_score_anim);
holder.fragmentCircleTxtZanNum.setVisibility(View.VISIBLE);
holder.fragmentCircleTxtZanNum.startAnimation(animation);
holder.fragmentCircleTxtZan.setBackgroundResource(R.drawable.zans);
new Handler().postDelayed(new Runnable() {
public void run() {
holder.fragmentCircleTxtZanNum.setVisibility(View.GONE);
}
}, 1000);
}
});
if (StringUtils.isEmpty(list.get(position).getImage())){
holder.gridView.setVisibility(View.GONE);
}else{
holder.gridView.setVisibility(View.VISIBLE);
String[] images = list.get(position).getImage().split(",");
int colNum;//列数
if (images.length == 1){
colNum = 1;
}else if (images.length == 2||images.length == 4){
colNum = 2;
}else {
colNum = 3;
}
holder.gridView.setNumColumns(colNum);
holder.imageAdapter.clear();
holder.imageAdapter.addAll(Arrays.asList(images));
holder.imageAdapter.notifyDataSetChanged();
}
}
@Override
public int getItemCount() {
return list.size();
}
public void addAll(List<Circle> result) {
if (result !=null){
list.addAll(result);
}
}
public class ViewHolder extends RecyclerView.ViewHolder {
private final SimpleDraweeView fragmentCircleSdvImage;
private final TextView fragmentCircleTxtName;
private final TextView fragmentCircleTxtDate;
private final TextView fragmentCircleTxtContent;
private final ImageAdapter imageAdapter;
private final RecyclerGridView gridView;
private final TextView fragmentCircleTxtZan;
private final TextView fragmentCircleTxtZanNum;
public ViewHolder(View itemView) {
super(itemView);
fragmentCircleSdvImage = itemView.findViewById(R.id.fragment_circle_sdv_image);
fragmentCircleTxtName = itemView.findViewById(R.id.fragment_circle_txt_name);
fragmentCircleTxtDate = itemView.findViewById(R.id.fragment_circle_txt_date);
fragmentCircleTxtContent = itemView.findViewById(R.id.fragment_circle_txt_content);
fragmentCircleTxtZan = itemView.findViewById(R.id.fragment_circle_txt_zan);
fragmentCircleTxtZanNum = itemView.findViewById(R.id.fragment_circle_txt_zannum);
gridView = itemView.findViewById(R.id.grid_view);
imageAdapter = new ImageAdapter();
int space = context.getResources().getDimensionPixelSize(R.dimen.dp_10);;//图片间距
gridView.setHorizontalSpacing(space);
gridView.setVerticalSpacing(space);
gridView.setAdapter(imageAdapter);
}
}
}
3:ImageAdapter布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/circle_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
/>
</LinearLayout>
4:ImageAdapter代码
public class ImageAdapter extends BaseAdapter {
private List<String> mList = new ArrayList<>();
public void addAll(List<String> list){
mList.addAll(list);
}
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int position) {
return mList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyHodler myHodler ;
if (convertView==null){
convertView = View.inflate(parent.getContext(), R.layout.circle_image_item,null);
myHodler = new MyHodler();
myHodler.image = convertView.findViewById(R.id.circle_image);
convertView.setTag(myHodler);
}
myHodler = (MyHodler) convertView.getTag();
myHodler.image.setImageURI(Uri.parse(mList.get(position)));
return convertView;
}
public void clear() {
mList.clear();
}
class MyHodler {
SimpleDraweeView image;
}
}