我目前正在开发一个使用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只需调用一次即可.
这种异常行为吗?如果是这样,怎么解决?
我正在使用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
android ×2