Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么我的回收视图没有显示在片段中?_Android_Android Recyclerview - Fatal编程技术网

Android 为什么我的回收视图没有显示在片段中?

Android 为什么我的回收视图没有显示在片段中?,android,android-recyclerview,Android,Android Recyclerview,我是一个新的使用RecyclerView的人,所以我只是遵循了我以前的工作代码,这样我就可以把它应用到我正在做的一个论文项目中 问题是,当我单击myNavDrawer并选择显示存储myRecyclerView的库存片段的选项时,我的应用程序会突然关闭 我的logcat中有一个错误,但我不知道为什么会有错误,因为我以前的项目包含相同的代码行 logcat 2019-07-06 16:07:22.963 6623-6623/com.example.devcash E/AndroidRuntime:

我是一个新的使用
RecyclerView
的人,所以我只是遵循了我以前的工作代码,这样我就可以把它应用到我正在做的一个论文项目中

问题是,当我单击my
NavDrawer
并选择显示存储my
RecyclerView
的库存片段的选项时,我的应用程序会突然关闭

我的logcat中有一个错误,但我不知道为什么会有错误,因为我以前的项目包含相同的代码行

logcat

2019-07-06 16:07:22.963 6623-6623/com.example.devcash E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.devcash, PID: 6623
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
        at com.example.devcash.CustomAdapters.InventoryOptionsAdapter$RecyclerViewHolder.bindView(InventoryOptionsAdapter.java:45)
        at com.example.devcash.CustomAdapters.InventoryOptionsAdapter.onBindViewHolder(InventoryOptionsAdapter.java:24)
        at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6781)
        at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6823)
        at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5752)
        at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6019)
        at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5858)
        at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5854)
        at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2230)
        at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1557)
        at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517)
InventoryOptionsAdapter.java

public class InventoryOptionsAdapter extends RecyclerView.Adapter {
    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.fragment_list_options, viewGroup, false);
        return new RecyclerViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
        ((RecyclerViewHolder)viewHolder).bindView(i);
    }

    @Override
    public int getItemCount() {
        return InventoryOptions.label.length;
    }

    private class RecyclerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        private TextView mItemText;
        private ImageView mItemImage;

        public RecyclerViewHolder(View itemView){
            super(itemView);
            mItemText = (TextView) itemView.findViewById(R.id.inventorylist_title);
            mItemImage = (ImageView) itemView.findViewById(R.id.inventorylist_icon);
            itemView.setOnClickListener(this);
        }


        public void bindView(int position){
            mItemText.setText(InventoryOptions.label[position]);
            mItemImage.setImageResource(InventoryOptions.picturePath[position]);
        }

        @Override
        public void onClick(View v) {
            //write something here
        }
    }
}
ListOptionFragment.java

public class ListOptionsFragment extends Fragment {


    public ListOptionsFragment() {
        // Required empty public constructor
    }


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

        RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview_inventorylist);

        InventoryOptionsAdapter adapter = new InventoryOptionsAdapter();
        recyclerView.setAdapter(adapter);
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity());
        recyclerView.setLayoutManager(layoutManager);

        return view;
    }

}
fragment_inventory.xml

<LinearLayout 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=".Fragments.InventoryFragment"
    android:orientation="horizontal"
    android:id="@+id/inventory_content">

    <fragment
        android:id="@+id/inventorylist_fragment"
        android:name="com.example.devcash.ListOptionsFragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        tools:layout="@layout/fragment_list_options">

    </fragment>

    <View
        style="@style/Divider"
        android:layout_width="1dp"
        android:layout_height="wrap_content" />

    <RelativeLayout
        android:id="@+id/inventorylist_fragmentcontainer"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="2"/>


</LinearLayout>

编辑:

fragment_list_options.xml

<FrameLayout 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"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".ListOptionsFragment">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar_purchaseitemlist"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        style="@style/PrimaryHeaderBar"
        android:elevation="4dp"
        app:title="@string/inventory_title"
        app:titleTextAppearance="@style/TextAppearance.AppCompat.Title"/>


    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview_inventorylist"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:choiceMode="singleChoice"
        android:listSelector="@color/light_gray"/>
</FrameLayout>

customlayout\u inventorylist.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="@dimen/padding_20"
    android:gravity="left|center">


    <ImageView
        android:id="@+id/inventorylist_icon"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:src="@drawable/ic_email"
        android:tint="@color/icon_light"/>

    <TextView
        android:id="@+id/inventorylist_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/inventory_title"
        android:paddingLeft="@dimen/padding_50"
        android:textSize="@dimen/page_title"
        android:textColor="@color/dark_text"/>

</LinearLayout>

而不是

<fragment
        android:id="@+id/inventorylist_fragment"
        android:name="com.example.devcash.ListOptionsFragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        tools:layout="@layout/fragment_list_options">

    </fragment>

使用Framelayout并将当前片段替换为清单列表片段,而不是

<fragment
        android:id="@+id/inventorylist_fragment"
        android:name="com.example.devcash.ListOptionsFragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        tools:layout="@layout/fragment_list_options">

    </fragment>


使用Framelayout并将当前片段替换为清单片段

如下更新适配器

充气
customlayout\u inventorylist
而不是
fragment\u list\u options

        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.customlayout_inventorylist, viewGroup, false);
这是您更新的适配器

public class InventoryOptionsAdapter extends RecyclerView.Adapter {
    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.customlayout_inventorylist, viewGroup, false);
        return new RecyclerViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
        ((RecyclerViewHolder)viewHolder).bindView(i);
    }

    @Override
    public int getItemCount() {
        return InventoryOptions.label.length;
    }

    private class RecyclerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        private TextView mItemText;
        private ImageView mItemImage;

        public RecyclerViewHolder(View itemView){
            super(itemView);
            mItemText = (TextView) itemView.findViewById(R.id.inventorylist_title);
            mItemImage = (ImageView) itemView.findViewById(R.id.inventorylist_icon);
            itemView.setOnClickListener(this);
        }


        public void bindView(int position){
            mItemText.setText(InventoryOptions.label[position]);
            mItemImage.setImageResource(InventoryOptions.picturePath[position]);
        }

        @Override
        public void onClick(View v) {
            //write something here
        }
    }
}

按如下所示更新适配器

充气
customlayout\u inventorylist
而不是
fragment\u list\u options

        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.customlayout_inventorylist, viewGroup, false);
这是您更新的适配器

public class InventoryOptionsAdapter extends RecyclerView.Adapter {
    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.customlayout_inventorylist, viewGroup, false);
        return new RecyclerViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
        ((RecyclerViewHolder)viewHolder).bindView(i);
    }

    @Override
    public int getItemCount() {
        return InventoryOptions.label.length;
    }

    private class RecyclerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        private TextView mItemText;
        private ImageView mItemImage;

        public RecyclerViewHolder(View itemView){
            super(itemView);
            mItemText = (TextView) itemView.findViewById(R.id.inventorylist_title);
            mItemImage = (ImageView) itemView.findViewById(R.id.inventorylist_icon);
            itemView.setOnClickListener(this);
        }


        public void bindView(int position){
            mItemText.setText(InventoryOptions.label[position]);
            mItemImage.setImageResource(InventoryOptions.picturePath[position]);
        }

        @Override
        public void onClick(View v) {
            //write something here
        }
    }
}

请展示您的单件物品设计file@MuhammadAshfaq我不确定你在寻找什么样的设计,但我已经编辑了我的帖子。可能TextView的Id是错误的。你能添加单个项目的布局文件吗?我想你的
片段列表\u选项的内容是错误的。它应该包含一个文本视图(
目录列表\u标题
)和一个图像视图(
目录列表\u图标
)请展示您的单件物品设计file@MuhammadAshfaq我不确定你在寻找什么样的设计,但我已经编辑了我的帖子。可能TextView的Id是错误的。你能添加单个项目的布局文件吗?我想你的
片段列表\u选项的内容是错误的。它应该包含一个文本视图(
目录列表\u标题
)和一个图像视图(
目录列表\u图标