Recyserview가 CreateView를 호출하지 않음홀더
★★★RecyclerView
는, 「」을 호출하지 .onCreateViewHolder
,onBindViewHolder
심지어.MenuViewHolder
되지 않습니다.RecyclerView
디버깅을 위해 로그를 저장했지만 로그는 표시되지 않습니다.★★★★★★★★★★★★★★★★?
내 어댑터:
public class MenuAdapter extends RecyclerView.Adapter<MenuAdapter.MenuViewHolder> {
private LayoutInflater inflater;
List<Menu> data = Collections.emptyList();
public MenuAdapter(Context context, List<Menu> data) {
Log.i("DEBUG", "Constructor");
inflater = LayoutInflater.from(context);
Log.i("DEBUG MENU - CONSTRUCTOR", inflater.toString());
this.data = data;
for(Menu menu: this.data){
Log.i("DEBUG MENU - CONSTRUCTOR", menu.menu);
}
}
@Override
public MenuViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.row_menu, parent, false);
MenuViewHolder holder = new MenuViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(MenuViewHolder holder, int position) {
Log.i("DEBUG MENU", "onBindViewHolder");
Menu current = data.get(position);
holder.title.setText(current.menu);
}
@Override
public int getItemCount() {
return 0;
}
class MenuViewHolder extends RecyclerView.ViewHolder {
TextView title;
ImageView icon;
public MenuViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.menuText);
}
}
내 사용자 지정 행 XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/menuText"
android:text="Dummy Text"
android:layout_gravity="center_vertical"
android:textColor="#222"/>
및 fragment:
public NavigationFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mUserLearnedDrawer = Boolean.valueOf(readFromPreferences(getActivity(), KEY_USER_LEARNED_DRAWER, "false"));
if (savedInstanceState != null) {
mFromSavedInstaceState = true;
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_navigation, container, false);
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.drawer_list);
MenuAdapter adapter = new MenuAdapter(getActivity(), getData());
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(adapter);
return view;
}
다른 하나는 레이아웃 관리자를 RecycleerView로 설정하는 것입니다.
recycler.setLayoutManager(new LinearLayoutManager(this));
의 ★★★★★★★★★★★★★★★★★.getItemCount
법 methodreturns 0
RecyclerView
뷰를 인스턴스화하려고 하지 않습니다.를 돌려주다greater than 0
.
예를들면
@Override
public int getItemCount() {
return data.size();
}
나는 그것을 추가한 후에 아래 줄을 추가하는 것을 잊었다.
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
언젠가 이 일이 누군가에게 도움이 되길 진심으로 바랍니다.난 한 시간 넘게 이 일에 몰두했어!
이런 게 있었어요.
projects_recycler_view.apply {
this.layoutManager = linearLayoutManager
this.adapter = adapter
}
내가 이걸 가졌어야 했을 때:
projects_recycler_view.apply {
this.layoutManager = linearLayoutManager
this.adapter = projectAdapter
}
를 잘못 adapter
적용 블록에 있는 재활용 뷰의 어댑터에 의해 그림자가 드리워지고 있었습니다.구별하기 위해 어댑터 이름을 projectAdapter로 변경했는데 문제가 해결되었습니다!
를 「레이아웃 매니저」로 .RecyclerView
다음과 같이 합니다.
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view_right);
//set your recycler view adapter here
NavigationAdapter adapter = new NavigationAdapter(this, FragmentDrawer.getData());
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
이것은 당신의 특별한 경우에는 해당되지 않습니다.하지만 이건 다른 사람에게 도움이 될 수도 있어
이 이유는 다음 방법을 부주의하게 사용한 것일 수 있습니다.
recyclerView.setHasFixedSize(true);
" "가 할 수 .onBindView
★★★★★★★★★★★★★★★★★」onCreateViewHolder
전혀 호출되지 않고 로그에 오류가 기록되지 않습니다.
누군가에게 도움이 될 수도 있지만 RecycleView의 가시성을 GOWN으로 설정하면 어댑터 메서드는 호출되지 않습니다.알아내는 데 시간이 좀 걸렸어요
중요한 것은 어댑터가 실제로 초기화되기 전에 리사이클러 뷰 어댑터를 설정할 때 확인했습니다.해결방법은 확실히 하는 것이었다.recyclerView.setAdapter(adapter)
는 비접속 되었습니다.
의 설정TextView
custom.xml
★★★★★★★★★★★★★★★★★」RecyclerView
가가인 wrap-content
, . . . . . . . .RecyclerView
을 사용하다
은 나의 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.RecyclerView
에 있었다ScrollView
Android Support Library 23.0입니다.위해 23. 해해 android support Android Library 23으로 했습니다.2시 30분입니다.
build.gradle의 경우:
dependencies {
...
compile 'com.android.support:appcompat-v7:23.2.+'
compile 'com.android.support:cardview-v7:23.2.+'
}
도 같은 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★android.support.constraint.ConstraintLayout
를 참조해 주세요.「 」로 FrameLayout
도움이 되었습니다.
어댑터 클래스에 추가
@Override
public int getItemCount() {
return mDataset.size();
}
다른 옵션은 get을 사용하여 이 목록 Objetc를 전송하는 경우, 예를 들어 올바른 참조가 있는지 확인하는 것입니다.
private list<objetc> listObjetc;
//Incorrect
public void setListObjetcs(list<objetc> listObjetc){
listObjetc = listObjetc;
}
//Correct
public void setListObjetcs(list<objetc> listObjetc){
this.listObjetc = listObjetc;
}
내 경우 목록 크기가 0이었고 onCreateView를 호출하지 않았습니다.홀더 방식빈 목록의 중앙에 자리 표시자로 메시지를 표시해야 해서 이렇게 했더니 참 잘 되더라고요.@Constantin Burov의 답변이 도움이 되었습니다.
@Override
public int getItemCount() {
if (contactList.size() == 0) {
return 1;
} else {
return contactList.size();
}
}
나는 이 문제로 몇 시간 동안 고생했다.츠키노 것입니다.view
음음음음 뭇매하다
ProductGridBinding binding = DataBindingUtil.inflate( inflater, R.layout.product_grid, container, false);
mLinearLayoutManager = new LinearLayoutManager(getActivity());
mLinearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
binding.rvNumbers.setHasFixedSize(true);
binding.rvNumbers.setLayoutManager(mLinearLayoutManager);
binding.rvNumbers.setAdapter(adapter);
View view = binding.getRoot();
return view;
Android 데이터 바인딩 라이브러리를 사용하는 경우 답변 보기 - recycerview 레이아웃을 설정하고 항목 수는 0보다 커야 합니다.
@BindingAdapter({"entries", "layout"})
public static void setEntries(RecyclerView view, ArrayList<LoginResponse.User> listOfUsers, int layoutId) {
if (view.getAdapter() == null) {
view.setLayoutManager(new LinearLayoutManager(view.getContext()));
SingleLayoutAdapter adapter = new SingleLayoutAdapter(layoutId) {
@Override
protected Object getObjForPosition(int position) {
return listOfUsers.get(position);
}
@Override
public int getItemCount() {
return listOfUsers.size();
}
};
view.setAdapter(adapter);
}
}
해피 코딩 :-)
wrap_content를 목록 높이와 항목 목록 높이로 입력하면 아무것도 표시되지 않고 recycleerView 함수도 호출되지 않습니다.항목의 높이를 고정하거나 목록 높이로 match_parent를 입력합니다.그것으로 내 문제는 해결되었다.
내 경우 RecyclerView의 ID를 "recyclerView"로 설정합니다.다른 ID로 변경했을 때 어댑터의 메서드가 올바르게 호출되었기 때문에 이 ID는 이미 어딘가에 정의되어 있었던 것 같습니다.
커스텀 어댑터를 사용하고 있는 경우는, 반드시 Item Count 를 컬렉션 사이즈로 설정합니다.
내 담당자는 onBindView였다.RecycleerView.adaptor의 Holder(홀더, 위치) 메서드가 호출되지 않았습니다.메서드 onCreateView홀더가 호출되고 getItemCount가 호출되었습니다.Recycleerview어댑터의 사양을 읽어보면 BindView를 덮어쓰면홀더(홀더, 위치, 목록 페이로드)는 호의적으로 호출됩니다.그러니 조심하세요.
제 실수는 Fragment on Create View에서 잘못된 뷰를 부풀린 것입니다.
xml 앱에서 다음 행을 잊어버렸습니다.layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
또는
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
다음 작업을 수행해 주십시오.
@Override
public int getItemCount() {
return data.size();
}
Binding을 하도록 액티비티를 한 후 Model의 Data Binding을 삭제하는 .setContentView
「」로부터의 메서드 onCreate
그것을 제거함으로써 나의 문제는 해결되었다.
저는 setHasStableIds(true); 메서드가 설정되었기 때문입니다.그것을 제거하면 작동한다.
recycleer View를 참조해 주세요.setAdapter(어댑터). recycleerView목록은 메서드를 호출하여 입력됩니다.
하세요.XML
★★★★★★★★★★★★★★★★★」Koltin/Java
같은 에는 문제가 요.ViewHolder
'이것'은 다음과 같습니다.
var txt: AppCompatTextView = itemView.findViewById(R.id.txt)
그러나 내 XML 코드는 다음과 같습니다.
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
.../>
비밀행렬을 다음과 같이 변경해야 했습니다.
var txt: TextView = itemView.findViewById(R.id.txt)
또한 다음 항목도 삭제해야 했습니다.
recyclerView.setHasFixedSize(true);
도움이 되었으면 합니다:)
전화하는 것을 .notifyDataSetChanged()
어댑터에서 목록을 설정한 후.
public void setUserList(List<UserList> userList) {
this.userList = userList;
notifyDataSetChanged();
}
내 경우 Linear Layout에서 방향을 설정하지 못했습니다.
방향 추가 후 문제 해결.
android:orientation="vertical"
제 고민은layout_height
그리고.layout_width
RecycleerView의 설정0dp
.
언급URL : https://stackoverflow.com/questions/27809524/recyclerview-not-call-oncreateviewholder
'sourcecode' 카테고리의 다른 글
gdb에서 백슬래시 이스케이프를 표시하지 않고 늘 종단 문자열과 줄 바꿈을 인쇄하려면 어떻게 해야 합니까? (0) | 2022.08.01 |
---|---|
투명 배경을 사용하여 OpenGL 렌더링 컨텍스트를 만드는 방법 (0) | 2022.08.01 |
유닛 테스트 VueJS 구성 요소에서 Vuex 오류 발생 (0) | 2022.07.31 |
이미지를 업로드할 때 vue 구성 요소에서 이미지를 자동으로 업데이트하려면 어떻게 해야 합니까? (0) | 2022.07.31 |
ReferenceError:"Swal 정의되지 않". (0) | 2022.07.31 |