相关疑难解决方法(0)

RecyclerView.Adapter的onCreateViewHolder被调用两次或更多次,多次

我目前正在开发一个使用RecyclerView的应用程序.

在查看LogCat时,我注意到onCreateViewHolder在实例化后被调用了两次.

09-22 05:22:55.209 V/Adapter? Construct
09-22 05:22:55.213 V/Adapter? onCreateViewHolder
09-22 05:22:55.224 V/Adapter? onBindViewHolder
09-22 05:22:55.240 V/Adapter? onCreateViewHolder
09-22 05:22:55.247 V/Adapter? onBindViewHolder
Run Code Online (Sandbox Code Playgroud)

此外,onBindViewHolder被调用了两次,但我知道每当项目被回收时都会调用它.

但我认为onCreateViewHolder只需调用一次即可.

这种异常行为吗?如果是这样,怎么解决?

android android-viewholder android-recyclerview

15
推荐指数
2
解决办法
2万
查看次数

我如何不回收我的recyclerview的前2个视图或任何项目?

我正在使用recyclerview来显示和播放用户的视频.但是,当我滚动循环播放器视图时,我会看到我的第一个视图,其中我的视频被回收,因此其他用户无法看到它.有没有办法可以确保第一个视图不被回收,所以我不必担心每次滚动列表时我的视频视图都会重置回来?

这是我的代码:在我的片段......

 <android.support.v7.widget.RecyclerView
        android:id="@+id/videoList"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:visibility="invisible"
        app:layout_constraintBottom_toTopOf="@+id/myButtonContainer"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/myoldContainer">
Run Code Online (Sandbox Code Playgroud)

...

和相应的适配器......

public class GroupAdapter extends RecyclerView.Adapter<GroupAdapter.myViewHolder> {

    private CopyOnWriteArrayList<Person> persons;
    private Context mContext;

    public GroupAdapter(@NonNull final CopyOnWriteArrayList<Person> persons , Context context) {
        this.persons = persons;
        this.mContext= context;

        for (Person person : this.persons) {
           //get names
        }
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        final View layout = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_person, parent, false);
        final MyViewHolder viewHolder = new MyViewHolder(layout);
        return viewHolder;
    }
     @Override
        public void onBindViewHolder(MyViewHolder holder, int position) …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-fragments android-videoview android-recyclerview

5
推荐指数
1
解决办法
1624
查看次数