android.support.v4.widget.NestedScrollView无法强制转换为android.support.v7.widget.RecyclerView

时间:2016-07-30 00:16:31

标签: java android xml android-fragments android-recyclerview

下午好,

我正在尝试使用包含项目的RecyclerView创建一个片段。

在这些项目之上,我需要添加一些带过滤器的标题。

以下是片段的xml (fragment_products_list)

<?xml version="1.0" encoding="utf-8"?>

<android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

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

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="12sp"
            android:id="@+id/filters_frame">
            <include layout="@layout/expandable_filters"/>
        </RelativeLayout>

        <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/recyclerview"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </LinearLayout>
</android.support.v4.widget.NestedScrollView>

以下是我的Fragment java文件中的OnCreateView (ListFragment.java)

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    RecyclerView rv = (RecyclerView) inflater.inflate(
            R.layout.fragment_products_list, container, false);

    //Product filters
    expandFiltersButton = (ImageButton) getView().findViewById(R.id.expand_filters);
    expandableZone = (LinearLayout) getView().findViewById(R.id.expandable_zone);

    expandFiltersButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            if(expandableZone.isShown()){
                expandableZone.setVisibility(View.GONE);
                expandFiltersButton.setImageResource(R.drawable.ic_more_24dp);
            }else{
                expandableZone.setVisibility(View.VISIBLE);
                expandFiltersButton.setImageResource(R.drawable.ic_less_24dp);
            }
        }
    });

    setupRecyclerView(rv);

    mRecyclerView = rv;
    loadUpdates();
    return rv;
}

我在尝试运行应用时遇到此错误代码:

android.support.v4.widget.NestedScrollView cannot be cast to android.support.v7.widget.RecyclerView

问题是什么?如何解决? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

试试这个:

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(
            R.layout.fragment_products_list, container, false);


    //Product filters
     RecyclerView rv = (RecyclerView) view.findViewById(R.id.recyclerview);
    expandFiltersButton = (ImageButton) view.findViewById(R.id.expand_filters);
    expandableZone = (LinearLayout) view.findViewById(R.id.expandable_zone);

    expandFiltersButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            if(expandableZone.isShown()){
                expandableZone.setVisibility(View.GONE);
                expandFiltersButton.setImageResource(R.drawable.ic_more_24dp);
            }else{
                expandableZone.setVisibility(View.VISIBLE);
                expandFiltersButton.setImageResource(R.drawable.ic_less_24dp);
            }
        }
    });

    setupRecyclerView(rv);

    mRecyclerView = rv;
    loadUpdates();
    return view;
}
相关问题