user5345476
user5345476

Reputation:

recyclerview in tab layout

i am currently working on recyclerview in tab tablayout. i am getting a error

Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference can anybody tell me what is the mistake

listcontent.java file

    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" />

Upvotes: 1

Views: 170

Answers (1)

Prince Bansal
Prince Bansal

Reputation: 1655

You are inflating a wrong layout item_tile.xml instead of item_list.xml to create ViewHolder View.

Change this

@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;
}

To

@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;
}

Upvotes: 1

Related Questions