如何在Activity(基本Java文件)中访问Recycler View的布局?

时间:2019-11-03 19:09:13

标签: android

  

这是我的布局(fragment_hadees.xml):

 <?xml version="1.0" encoding="utf-8"?>
<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=".Hadees">


    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:id="@+id/myrecyclerview"
        android:layout_height="match_parent"/>

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/fab"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:elevation="40dp"
        android:layout_margin="30dp"
       android:backgroundTint="#ffffff"
        android:src="@drawable/favorited"/>


</RelativeLayout>
  

这是Hadees.java(java根文件):

   @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    View root = inflater.inflate(R.layout.fragment_hadees, container, false);
   ((MainActivity) getActivity()).getSupportActionBar().setTitle("Hadees");

   HadeesAdapter hadeesAdapter;
   fab= root.findViewById(R.id.fab);
    ImageView copybutton= root.findViewById(R.id.copybutton);
    final TextView textView=root.findViewById(R.id.textView);
    ImageView whatsapText=root.findViewById(R.id.whatsApp_txt);


    toggleModelList= new ArrayList<>();

    fab.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View view) {
          Toast.makeText(getActivity(), "FAB", Toast.LENGTH_SHORT).show();


       }
    });


    myrecyclerview=(RecyclerView)root.findViewById(R.id.myrecyclerview);
    myrecyclerview.setLayoutManager(new LinearLayoutManager(getActivity()));
  

这是我的hadees_contents.xml:

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


    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_margin="10dp"
        android:textIsSelectable="true"
        android:textColor="#000000"
        android:gravity="center"
        android:maxLines="100"
        android:fontFamily="sans-serif-condensed-medium"
        android:text="This is Arabic Text"
        android:textSize="20sp" />

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginTop="2dp"
        android:layout_marginBottom="2dp"
        android:background="@android:color/darker_gray" />

    <LinearLayout
        android:id="@+id/l2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="6dp"
        android:layout_marginBottom="6dp"
        android:weightSum="4">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/copybutton"
            android:src="@drawable/ic_content_copy_black_24dp" />
  

如何在Hadees.java的hadees_contents.xml中访问视图?   我可以访问FAB,但不能访问Recycler的“视图膨胀”布局的内容,即hadees_contents.xml

2 个答案:

答案 0 :(得分:1)

您正试图从Hadees.java访问hadees_contents的字段,该字段不会使xml hadees_contents膨胀。 它使xmlfragment_hadees膨胀,这就是为什么如果您尝试从Hadees.java访问hadees_contents时将得到空指针异常的原因。 我可以想出一种解决此问题的方法,但我不知道它是否适合您的情况。您必须具有一个将hadees_contents字段添加到recyclerview中的活动,您可以从该addActivity发送一个意图,该意图将hadees_contents膨胀到您的Hadees.java类,并在您从Hadees.java调用OnActivityResult方法时收到它。

答案 1 :(得分:1)

通过调用以下方法,不会夸大1 2 3 4 5 6 7 8 9 10 的实例。它只会使RecyclerView本身膨胀,这是一个空的ViewGroup。

hadees_contents.xml

RecyclerViews需要一个 adapter 来告诉他们要充气的东西和要绑定的数据。有关更多信息和示例,请参阅Simple Android RecyclerView example