Android Recycleview的使用

参考一
参考二
适配器代码如下
在这里插入图片描述

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用到的代码如下
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值