选项卡布局中的回收视图

recyclerview in tab layout

我目前正在使用标签页布局中的 recyclerview。 我收到一个错误

尝试在空对象引用上调用虚拟方法 'void android.widget.TextView.setText(java.lang.CharSequence)' 谁能告诉我哪里错了

listcontent.java 文件

    package com.example.a1407268.learn12;
      import android.content.Context;
      import android.content.res.Resources;
      import android.content.res.TypedArray;
      import android.graphics.drawable.Drawable;
      import android.os.Bundle;
      import android.support.v4.app.Fragment;
      import android.support.v7.widget.LinearLayoutManager;
      import android.support.v7.widget.RecyclerView;
      import android.view.LayoutInflater;
      import android.view.View;
      import android.view.ViewGroup;
      import android.widget.ImageView;
      import android.widget.TextView;

    public class Listcontent extends Fragment {
    private RecyclerView.Adapter adapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        RecyclerView recyclerview = (RecyclerView)                        
    inflater.inflate(R.layout.recycler_view, container, false);
        adapter = new MyAdapter(getContext());
        recyclerview.setAdapter(adapter);
        recyclerview.setHasFixedSize(true);
        recyclerview.setLayoutManager(new LinearLayoutManager(getActivity()));
        return recyclerview;
    }
}

    class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyrecyclerViewHolder>{
     final int LENGTH=18;
    String[] place;
    String[] des;
    Drawable[] pic;

    public MyAdapter(Context context) {
        Resources r = context.getResources();
        place = r.getStringArray(R.array.places);
        des = r.getStringArray(R.array.place_desc);
        TypedArray a = r.obtainTypedArray(R.array.place_avator);
        pic = new Drawable[a.length()];
        for (int i = 0; i < pic.length; i++) {
            pic[i] = a.getDrawable(i);
        }
        a.recycle();
    }

    @Override
    public MyrecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v 
    =LayoutInflater.from(parent.getContext()).inflate(R.layout.item_tile, 
    parent,false);
        MyrecyclerViewHolder recyclerview = new MyrecyclerViewHolder(v);
        return recyclerview;
    }

    @Override
    public void onBindViewHolder(MyrecyclerViewHolder holder, int position) {
        holder.tx_des.setText(des[position]);
        holder.tx_title.setText(place[position]);
        holder.img.setImageDrawable(pic[position]);
    }

    @Override
    public int getItemCount() {
        return LENGTH;
    }


    public class MyrecyclerViewHolder extends RecyclerView.ViewHolder {

        ImageView img;
        TextView tx_des, tx_title;

        public MyrecyclerViewHolder(View view) {
            super(view);
            img = (ImageView) view.findViewById(R.id.image_view);
            tx_des = (TextView) view.findViewById(R.id.discription);
            tx_title = (TextView) view.findViewById(R.id.tittle);
        }
  }
}

item_list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="60dp">
<android.support.v7.widget.CardView
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/card_view"
>
 <RelativeLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     >
     <ImageView
         android:layout_width="100dp"
         android:layout_height="100dp"
         android:id="@+id/image_view"
         android:src="@drawable/a_avator"
         />
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/tittle"
         android:text="@string/item_title"
         android:textStyle="bold"
         android:textAppearance="?android:textAppearanceLarge"
         android:layout_toRightOf="@+id/image_view"
         />
     <TextView
         android:id="@+id/discription"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_below="@+id/tittle"
         android:layout_toRightOf="@+id/image_view"
         android:textAppearance="?attr/textAppearanceListItem"
         />

 </RelativeLayout>
</android.support.v7.widget.CardView>
</LinearLayout>

array.xml

    <resources>
    <string-array name="places">
    <item>Palais Garnie</item>
    <item>Piazza del Duomo</item>
    <item>Manhattan</item>
    <item>Senso-ji</item>
    <item>Sultan Ahmed Mosque</item>
    <item>Table Mountain</item>
   </string-array>
    <string-array name="place_desc">
    <item>The Palais Garnier which locates in Paris was built from 1861 for
    the Paris Opera.
    </item>
    <item>Piazza del Duomo the cathedral which locates in Florence.</item>
    <item>Manhattan is the district in New York City</item>
    <item>Senso-ji is the Shrine locates in Asakusa Tokyo</item>
    <item>Sultan Ahmed Mosque is mosque locates in Istabul, Turkey</item>
    <item>Table Mountain is mountain and park locates in Cape Town, South `       
Africa.</item>
</string-array>
<string-array name="place_details">
    <item>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
    eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad 
    minim veniam, quis
    nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo `             `       `consequat. Duis aute
    irure dolor in reprehenderit in voluptate velit esse cillum dolore eu  `               `       fugiat nulla
    pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa `        `qui officia
    deserunt mollit anim id est laborum.
    </item>
    <item>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
    eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad `         `        `minim veniam, quis
    nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo `          `       `consequat. Duis aute
    irure dolor in reprehenderit in voluptate velit esse cillum dolore eu   `       fugiat nulla
    pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa `      `qui officia
    deserunt mollit anim id est laborum.
    </item>
    <item>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
    eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad                                  `       `minim veniam, quis
    nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo `                           `       `consequat. Duis aute
    irure dolor in reprehenderit in voluptate velit esse cillum dolore eu             `      `fugiat nulla
    pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa `       `qui officia
    deserunt mollit anim id est laborum.
    </item>
    <item>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
    eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim `          `       `minim veniam, quis
    nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo `       `        `consequat. Duis aute
    irure dolor in reprehenderit in voluptate velit esse cillum dolore eu `      `       `fugiat nulla
    pariatur. Excepteur sint occaecat cupidatat non proident, sunt in cu`         `       `qui officia
    deserunt mollit anim id est laborum.
    </item>
    <item>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
    eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
    nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
    irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
    pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
    deserunt mollit anim id est laborum.
    </item>
    <item>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
    eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
    nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
    irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
    pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
    deserunt mollit anim id est laborum.
    </item>
    </string-array>


    <string-array name="place_locations">
    <item>8 Rue Scribe, 75009 Paris, France</item>
    <item>Piazza del Capitolo - 50122 Florence</item>
    <item>New York City</item>
    <item>2-3-1 Asakusa, Taitō-ku, Tokyo, Japan</item>
    <item>At Meydanı No:7, 34122 Fatih/İstanbul, Turkey</item>
    <item>Cape Town, South Africa</item>
</string-array>
<array name="place_avator">
    <item>@drawable/a_avator</item>
    <item>@drawable/b_avator</item>
    <item>@drawable/c_avator</item>
    <item>@drawable/d_avator</item>
    <item>@drawable/e_avator</item>
    <item>@drawable/f_avator</item>
</array>

</resources>

strings.xml

 <resources>
<string name="app_name">Learn12</string>
<string name="action_settings">Settings</string>
<string name="item_title">Palais Garnier</string>
<string name="item_desc">The Palais Garnier which locates in Paris was built         
</string>
<string name="detail_desc">Lorem ipsum dolor sit amet, consectetur   
 adipisicing elit, sed doeiusmod tempor incididunt ut labore et dolore magna `    `aliqua. Ut enim ad minim veniam, quisnostrud exercitation ullamco laboris         `    `nisi ut aliquip ex ea commodo   consequat. Duis auteirure dolor in `    `           ``    `reprehenderit in voluptate velit esse cillum dolore eu    fugiat nulla `     `      `pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa    `       `qui officia
    deserunt mollit anim id est laborum.
</string>
    <string name="detail_location">"8 Rue Scribe, 75009 Paris, France"`       `      `</string>
  </resources>

Recycler_view.xml

<android.support.v7.widget.RecyclerView      
 xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/my_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:scrollbars="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />

您正在膨胀错误的布局 item_tile.xml 而不是 item_list.xml 来创建 ViewHolder 视图。

改变这个

@Override
public MyrecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v =  LayoutInflater.from(parent.getContext()).inflate(R.layout.item_tile, parent, false);
    MyrecyclerViewHolder recyclerview = new MyrecyclerViewHolder(v);
    return recyclerview;
}

@Override
public MyrecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list, parent,false);
    MyrecyclerViewHolder recyclerview = new MyrecyclerViewHolder(v);
    return recyclerview;
}