gpt4 book ai didi

java - 回收器适配器不调用 onCreateViewHolder

转载 作者:行者123 更新时间:2023-11-29 19:19:00 27 4
gpt4 key购买 nike

我的 fragment

public class PostFragment extends BaseFragment implements PostView {
@Inject
PostPresenter presenter;

private RecyclerView recyclerView;
PostAdapter adapter;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_post, container, false);

recyclerView = (RecyclerView) v.findViewById(R.id.postFragmentRecycler);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

String s = "word";
ArrayList<String> array = new ArrayList<>();
for(int i = 0; i != 20; i++) {
array.add(s);
}

adapter = new PostAdapter(array);
recyclerView.setAdapter(adapter);

return v;
}

适配器

public class PostAdapter extends RecyclerView.Adapter {

private ArrayList<String> arrayList;

public PostAdapter(ArrayList<String> arrayList) {
Log.d("ADAPTER", "constructor");
this.arrayList = arrayList;
}

class MyViewHolder extends RecyclerView.ViewHolder {

public View view;

MyViewHolder(View itemView) {
super(itemView);
this.view = itemView;
}
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Log.d("ADAPTER", "CREATE");
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.post_item, parent, false);
return new MyViewHolder(view);
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
Log.d("ADAPTER", "bind");
}

@Override
public int getItemCount() {
Log.d("ADAPTER", "size = " + String.valueOf(arrayList.size()));
return arrayList.size();
}

xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="exp.glorio.view.fragments.PostFragment">

<android.support.v7.widget.RecyclerView
android:id="@+id/postFragmentRecycler"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>

post_item

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:layout_marginTop="10dp">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:visibility="visible">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_weight="1"
android:orientation="horizontal">

<ImageView
android:id="@+id/postGroupLogo"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginLeft="20dp"
android:layout_gravity="center"/>

<TextView
android:id="@+id/postGroupName"
android:layout_width="180dp"
android:layout_height="30dp"
android:textColor="@color/colorText"
android:textSize="12sp"
android:layout_marginLeft="30dp"
android:layout_gravity="center"
/>
</LinearLayout>

<TextView
android:id="@+id/postText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />

<LinearLayout
android:id="@+id/postAttachmentsContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

</LinearLayout>
</LinearLayout>

</android.support.v7.widget.CardView>

和日志:

03-17 17:11:23.753 30538-30538/exp.glorio D/ADAPTER: constructor
03-17 17:11:23.903 30538-30538/exp.glorio D/ADAPTER: size = 20
03-17 17:11:23.903 30538-30538/exp.glorio D/ADAPTER: size = 20
03-17 17:11:23.953 30538-30538/exp.glorio D/ADAPTER: size = 20
03-17 17:11:23.953 30538-30538/exp.glorio D/ADAPTER: size = 20

我在这个应用程序中有许多其他适配器,它们都可以工作。在这种情况下,如您所见,我不会忘记在 xml 中添加不在 ScrollView 下的 LayoutManager 和 Recycler View 。构造函数和 getItemCount 有效(为什么 4 次?)但 onBindViewHolder 和 onCreateViewHolder 不行。

最佳答案

问题出在 Activity 的根布局中。它是 android.support.constraint.ConstraintLayout。结合 fragment 容器的参数 layout_height“match_parent”,它给出了这个问题。如果将 ConstraintLayout 更改为任何其他 - 它会正常工作。

关于java - 回收器适配器不调用 onCreateViewHolder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42865087/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com