Reputation:
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
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