package com.example.app5.ui.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.view.menu.MenuView;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.example.app5.R;
import com.example.app5.data.DiscoverAlbum;
import com.example.app5.data.PersonalDetailsPhoto;
import com.example.app5.ui.activity.PersonalDetailsActivity;
import java.util.ArrayList;
import java.util.List;
public class RecycleViewAdapter extends RecyclerView.Adapter<RecycleViewAdapter.MyHolder> {//输入这行代码然后点击Alt+Enter自然就可以继承方法了,然后在方法里面改代码
private List<PersonalDetailsPhoto> mData;
private Context mContext;
ImageView imageView;
public RecycleViewAdapter(Context c) {
mContext = c;
mData = new ArrayList<>();
}
public void addAll(List<PersonalDetailsPhoto> list) {
mData.addAll(list);
notifyDataSetChanged();
}
class MyHolder extends RecyclerView.ViewHolder {
public MyHolder(View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.iv_person_photo);
}//holder是复用,省性能,如果没有就加载不出来
}
@NonNull
@Override
public MyHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_dynamic_photo, parent, false);
MyHolder holder = new MyHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull MyHolder holder, int position) {
PersonalDetailsPhoto dataBean = mData.get(position);
Glide.with(mContext).load(dataBean.thumb).into(imageView);
}
@Override
public int getItemCount() {
return mData.size();
}
}
item的代码,布局和item的代码一定要写好,宽高什么的如果不设置好,就算你写好了适配器也可能加载不出来
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tool="http://schemas.android.com/tools"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_person_photo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
tool:src="#000000" />
</RelativeLayout>
布局中的recycleview
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView1"
android:layout_width="match_parent"
android:layout_height="90dp"
app:layout_constraintLeft_toRightOf="@+id/barr_name"
app:layout_constraintTop_toBottomOf="@+id/tv_person_album"
app:layout_constraintBottom_toTopOf="@+id/tv_person_movie" />
Aciivity的代码
package com.example.app5.ui.activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.example.app5.R;
import com.example.app5.base.BaseActivity;
import com.example.app5.base.OkHttp;
import com.example.app5.data.HomeVedio;
import com.example.app5.data.PersonalDetails;
import com.example.app5.data.PersonalDetailsPhoto;
import com.example.app5.ui.adapter.HomeVedioAdapter;
import com.example.app5.ui.adapter.RecycleViewAdapter;
import com.example.app5.ui.adapter.UserInfoPhotoAdapter;
import java.util.List;
public class PersonalDetailsActivity extends BaseActivity {
/**
*
* @param userId
*/
public static void start(Context context, int userId) {
Intent starter = new Intent(context, PersonalDetailsActivity.class);
starter.putExtra("user_id", userId);
context.startActivity(starter);
}
private UserInfoPhotoAdapter mAdapter;//适配器
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_peopleshow);
RecyclerView recyclerView=findViewById(R.id.recyclerView1);
ImageView iv_avater=findViewById(R.id.iv_ph);
TextView tv_name=findViewById(R.id.tv_person_name);
TextView tv_place=findViewById(R.id.tv_place);
TextView tv_age=findViewById(R.id.tv_age);
TextView tv_tab=findViewById(R.id.tv_tab);
TextView tv_hight=findViewById(R.id.tv_hight);
TextView tv_weight=findViewById(R.id.tv_weight);
TextView tv_workplace=findViewById(R.id.tv_workplace);
TextView tv_person_follow=findViewById(R.id.tv_person_follow);
TextView tv_person_fans=findViewById(R.id.tv_person_fans);
TextView tv_person_imagetab=findViewById(R.id.tv_person_imagetab);
TextView tv_person_movie=findViewById(R.id.tv_person_movie);
GridView gv_vedio=findViewById(R.id.gv_gvmovie);
mAdapter = new UserInfoPhotoAdapter();
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL,false));
recyclerView.setAdapter(mAdapter);
Intent intent = getIntent();
int userId = intent.getIntExtra("user_id", 0);
OkHttp.create(this).getUserInfo(userId).enqueue((call, httpRes) -> {
Log.d("xxx1", httpRes.toString());
if (httpRes.isSuccessful()) {
PersonalDetails data = httpRes.dataFromObj(PersonalDetails.class);
tv_name.setText(String.valueOf(data.user_nickname));
tv_place.setText(String.valueOf(data.city));
tv_age.setText(String.valueOf(data.birthday));
tv_tab.setText(String.valueOf(data.signature));
tv_weight.setText("体重:"+String.valueOf(data.weight));
tv_hight.setText("身高:"+String.valueOf(data.height));
tv_workplace.setText("职业:"+data.occupation);
tv_person_follow.setText(String.valueOf(data.follow_num));
tv_person_fans.setText(String.valueOf(data.fans_num));
tv_person_imagetab.setText(String.valueOf(data.label));
Glide.with(this).load(data.avatar).into(iv_avater);
}
});
OkHttp.create(this).getHomePhoto(userId,1,1).enqueue((call, httpRes) ->{
Log.d("XXXphoto",httpRes.toString());
if (httpRes.isSuccessful()) {
List<PersonalDetailsPhoto> photoData = httpRes.dataFromList(PersonalDetailsPhoto.class);
mAdapter.addData(photoData);
for(PersonalDetailsPhoto datum:photoData){
Log.d("XXXphoto123",datum.thumb);
}
}
});
OkHttp.create(this).getHomeVideo(userId,1,10).enqueue((call, httpRes) ->{
Log.d("XXXvideo",httpRes.toString());
if (httpRes.isSuccessful()) {
HomeVedioAdapter vedioAdapter = new HomeVedioAdapter(this);
gv_vedio.setAdapter(vedioAdapter);
List<HomeVedio> vedioData = httpRes.dataFromList(HomeVedio.class);
vedioAdapter.addAll(vedioData);
}
});
OkHttp.create(this).getUserDynamic(userId,5).enqueue((call, httpRes) ->{
Log.d("XXXdynamic",httpRes.toString());
});
}
}
activity用到的代码如下