RecyclerView onCreateViewHolder 和 onBindViewHolder 未被調用

卡西克·普拉卡什

我正在嘗試通過從 SQLite 數據庫獲取數據來創建動態列表視圖。我創建了斷點,發現適配器文件的 onCreateViewHolder 和 onBindViewHolder 沒有被調用。無論如何,在嘗試在 getItemCount() 中打印計數時,我得到了正確的計數。任何人都可以幫我修復它嗎?

列表視圖.java

package com.hacker.wanderlust;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;

import com.hacker.wanderlust.adapter.TravelListAdapter;
import com.hacker.wanderlust.bean.Travel;
import com.hacker.wanderlust.dao.TravelDAO;
import com.hacker.wanderlust.logic.Conversion;

import java.text.ParseException;
import java.util.ArrayList;

public class TravelViewList extends AppCompatActivity {

    TravelDAO travelDAO = new TravelDAO(this);
    Conversion conversion = new Conversion();

    ArrayList<Travel> travels=new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_travel_view_list);

        try {

            RecyclerView travelList = (RecyclerView) findViewById(R.id.travelListView);

            travelList.setLayoutManager(new LinearLayoutManager(this));
            travelList.setHasFixedSize(true);

            Cursor cursor = travelDAO.getTravelData();

            Log.d("message","Cursor got data");

            if(cursor!=null && cursor.getCount()>0) {

                if(cursor.moveToFirst()) {

                    do {

                        Travel travel = new Travel();

                        travel.setName(cursor.getString(0));
                        travel.setLocation(cursor.getString(1));
                        travel.setDateOfTravel(conversion.toSQLDate(cursor.getString(2)));

                        Log.d("message",travel.getName());

                        travels.add(travel);

                    } while(cursor.moveToNext());

                }

            }

            travelList.setAdapter(new TravelListAdapter(conversion.travelArrayListToArray(travels)));

        } catch (ParseException e) {
            e.printStackTrace();
        }

    }
}

適配器文件

package com.hacker.wanderlust.adapter;

import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.hacker.wanderlust.R;
import com.hacker.wanderlust.bean.Travel;

public class TravelListAdapter extends RecyclerView.Adapter<TravelListAdapter.TravelViewHolder> {

    private Travel[] data;

    public TravelListAdapter(Travel[] data) {
        this.data = data;
    }

    @NonNull
    @Override
    public TravelViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        Log.d("message","onCreate");

        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View view = inflater.inflate(R.layout.travel_view, parent, false);
        return new TravelViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull TravelViewHolder holder, int position) {

        Travel travel=data[position];
        holder.tripName.setText(travel.getName());
        holder.tripDetails.setText(travel.getLocation());

    }

    @Override
    public int getItemCount() {
        Log.d("message","count: "+data.length);
        return data.length;
    }

    public class TravelViewHolder extends RecyclerView.ViewHolder {

        TextView tripName, tripDetails;

        public TravelViewHolder(@NonNull View itemView) {
            super(itemView);
            tripName = itemView.findViewById(R.id.tripName);
            tripDetails = itemView.findViewById(R.id.tripDetails);
        }
    }

}

travel_view.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingLeft="10dp"
    android:paddingTop="10dp">

    <TextView
        android:id="@+id/tripName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:textSize="34sp"></TextView>

    <TextView
        android:id="@+id/tripDetails"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:textSize="16sp"></TextView>

</LinearLayout>

activity_travel_view_list.xml

<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:id="@+id/travelListView"
    android:visibility="visible">

</androidx.recyclerview.widget.RecyclerView>

整個項目代碼的 Dropbox 鏈接:https : //www.dropbox.com/s/5qs7ixiylrxzv41/Wanderlust.zip?dl=0

卡西克·普拉卡什

問題是在回收站視圖 (activity_travel_view_list.xml) 中,高度和寬度設置為 0dp。我將其更改為 android:layout_width="match_parent" & android:layout_height="match_parent" 並且它起作用了。感謝大家的貢獻。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

支持库和RecyclerView onBindViewHolder和onCreateViewHolder的Proguard问题

来自分类Dev

RecyclerView onCreateViewHolder未被调用

来自分类Java

数据未在RecyclerView中显示。onCreateViewHolder和onBindViewHolder无法执行

来自分类Dev

FirebaseRecyclerAdapter 的 onBindViewHolder 和 onCreateViewholder 没有被调用

来自分类Java

Recyclerview不会调用任何Adapter方法:onCreateViewHolder,onBindViewHolder,

来自分类Dev

onBindViewHolder 和 RecyclerView 如何工作?

来自分类Dev

recyclerview 適配器如何知道調用 onCreateViewHolder?

来自分类Dev

RecyclerView onbindViewHolder

来自分类Dev

RecyclerView onCreateViewHolder 不运行

来自分类Java

Recyclerview不调用onCreateViewHolder

来自分类Dev

滚动时,Recyclerview GridlayoutManager OnBindViewHolder位置和getAdapterPosition()错误

来自分类Dev

将RecyclerView的getItemCount()与onCreateViewHolder同步

来自分类Dev

RecyclerView onCreateViewHolder 位置背景颜色

来自分类Dev

RecyclerView子项单击onBindViewHolder()

来自分类Dev

RecyclerView onBindViewHolder onclicklistener行为

来自分类Dev

如何将“onCreateViewHolder”中的代码迁移到“onBindViewHolder”

来自分类Dev

Nested RecyclerView : onBindViewHolder 被无限调用

来自分类Java

在RecyclerView中,在OnBindViewHolder方法中

来自分类Dev

RecyclerView何时使用ItemDecoration与onBindViewHolder

来自分类Dev

RecyclerView onBindviewholder Dialog clicklistner 动画

来自分类Dev

RecyclerView#onCreateViewHolder的Android ViewHolder参数不同

来自分类Dev

Android RecyclerView.Adapter onCreateViewHolder()工作

来自分类Dev

使用RecyclerView时,notifydatasetchanged调用onCreateViewHolder吗

来自分类Dev

recyclerview.onBindviewholder 始终在位置 0

来自分类Dev

RecyclerView onBindViewHolder 没有绘制我的视图

来自分类Dev

使用RecyclerView在setText上onBindViewHolder崩溃

来自分类Dev

RecyclerView onBindViewHolder一项被多次调用

来自分类Dev

RecyclerView不能在onBindViewHolder()中使用setText()

来自分类Dev

RecyclerView onBindViewHolder位置不符合预期

Related 相关文章

  1. 1

    支持库和RecyclerView onBindViewHolder和onCreateViewHolder的Proguard问题

  2. 2

    RecyclerView onCreateViewHolder未被调用

  3. 3

    数据未在RecyclerView中显示。onCreateViewHolder和onBindViewHolder无法执行

  4. 4

    FirebaseRecyclerAdapter 的 onBindViewHolder 和 onCreateViewholder 没有被调用

  5. 5

    Recyclerview不会调用任何Adapter方法:onCreateViewHolder,onBindViewHolder,

  6. 6

    onBindViewHolder 和 RecyclerView 如何工作?

  7. 7

    recyclerview 適配器如何知道調用 onCreateViewHolder?

  8. 8

    RecyclerView onbindViewHolder

  9. 9

    RecyclerView onCreateViewHolder 不运行

  10. 10

    Recyclerview不调用onCreateViewHolder

  11. 11

    滚动时,Recyclerview GridlayoutManager OnBindViewHolder位置和getAdapterPosition()错误

  12. 12

    将RecyclerView的getItemCount()与onCreateViewHolder同步

  13. 13

    RecyclerView onCreateViewHolder 位置背景颜色

  14. 14

    RecyclerView子项单击onBindViewHolder()

  15. 15

    RecyclerView onBindViewHolder onclicklistener行为

  16. 16

    如何将“onCreateViewHolder”中的代码迁移到“onBindViewHolder”

  17. 17

    Nested RecyclerView : onBindViewHolder 被无限调用

  18. 18

    在RecyclerView中,在OnBindViewHolder方法中

  19. 19

    RecyclerView何时使用ItemDecoration与onBindViewHolder

  20. 20

    RecyclerView onBindviewholder Dialog clicklistner 动画

  21. 21

    RecyclerView#onCreateViewHolder的Android ViewHolder参数不同

  22. 22

    Android RecyclerView.Adapter onCreateViewHolder()工作

  23. 23

    使用RecyclerView时,notifydatasetchanged调用onCreateViewHolder吗

  24. 24

    recyclerview.onBindviewholder 始终在位置 0

  25. 25

    RecyclerView onBindViewHolder 没有绘制我的视图

  26. 26

    使用RecyclerView在setText上onBindViewHolder崩溃

  27. 27

    RecyclerView onBindViewHolder一项被多次调用

  28. 28

    RecyclerView不能在onBindViewHolder()中使用setText()

  29. 29

    RecyclerView onBindViewHolder位置不符合预期

热门标签

归档