Reputation: 286
I am trying to set listview within swipeable tabs fragment but somehow the data is not getting stored in the customlistitem(setter and getter class). It always shows the null value. Please help
Here is the tab1 fragment code
package com.example.ic071034.materialstabs;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import java.util.ArrayList;
public class Tab1 extends Fragment {
private ListView mListView;
public ListviewContactAdapter adapter;
public ArrayList<ListviewContactItem> listContact;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab1, container, false);
mListView = (ListView) rootView.findViewById(android.R.id.list);
return rootView;
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
listContact = GetlistContact();
adapter=new ListviewContactAdapter(getActivity(), listContact);
mListView.setAdapter(adapter);
}
private ArrayList<ListviewContactItem> GetlistContact(){
ArrayList<ListviewContactItem> contactlist = new ArrayList<>();
ListviewContactItem contact = new ListviewContactItem();
contact.setPickUpPoint("xyz");
contact.setArea("xyz City");
contact.setLandmark("near xyz");
contact.setStreetName("xyz Road");
contactlist.add(contact);
contact = new ListviewContactItem();
contact.setPickUpPoint("xyz");
contact.setArea("xyz City");
contact.setLandmark("near xyz");
contact.setStreetName("xyz Road");
contactlist.add(contact);
contact = new ListviewContactItem();
contact.setPickUpPoint("xyz");
contact.setArea("xyz City");
contact.setLandmark("near xyz");
contact.setStreetName("xyz Road");
contactlist.add(contact);
return contactlist;
}
}
and here is the customadapter code
package com.example.ic071034.materialstabs;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
public class ListviewContactAdapter extends BaseAdapter {
private static ArrayList<ListviewContactItem> listContact=null;
private LayoutInflater mInflater;
private Context context;
public ListviewContactAdapter(Context photosFragment, ArrayList<ListviewContactItem> results){
listContact = results;
// mInflater = LayoutInflater.from(photosFragment);
this.context=photosFragment;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return listContact.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return listContact.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if(convertView == null){
convertView = mInflater.inflate(R.layout.pickup_point_list_layout, null);
holder = new ViewHolder();
holder.txtpickuppoint = (TextView) convertView.findViewById(R.id.rd_header_text);
holder.txtarea = (TextView) convertView.findViewById(R.id.area);
holder.txtlandmark = (TextView) convertView.findViewById(R.id.landmark);
holder.txtstreetname = (TextView) convertView.findViewById(R.id.streetname);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txtpickuppoint.setText(listContact.get(position).getPickUpPoint());
holder.txtarea.setText(listContact.get(position).getArea());
holder.txtlandmark.setText(listContact.get(position).getLandmark());
holder.txtstreetname.setText(listContact.get(position).getStreetName());
return convertView;
}
static class ViewHolder{
TextView txtpickuppoint, txtarea,txtlandmark,txtstreetname;
}
}
and here is the customitem class
public class ListviewContactItem {
private String PickUpPoint="";
private String Area = "";
private String Landmark="";
private String StreetName="";
//Area
public String getArea() {
return Area;
}
public void setArea(String Area) {
this.Area = Area;
}
//landmark
public String getLandmark() {
return Landmark;
}
public void setLandmark(String Landmark) {
this.Landmark = Landmark;
}
//PickUpPoint
public void setPickUpPoint(String PickUpPoint) {
this.PickUpPoint = PickUpPoint;
}
public String getPickUpPoint() {
return PickUpPoint;
}
//streetname
public void setStreetName(String StreetName) {
this.StreetName = StreetName;
}
public String getStreetName() {
return StreetName;
}
}
here is the logcat
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
at com.example.ic071034.materialstabs.Tab1.onCreateView(Tab1.java:28)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1016)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1197)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1562)
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:535)
at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1106)
at android.support.v4.view.ViewPager.populate(ViewPager.java:952)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1474)
at android.view.View.measure(View.java:17448)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5465)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17448)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5465)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.support.v7.internal.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:124)
at android.view.View.measure(View.java:17448)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5465)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17448)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5465)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17448)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5465)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17448)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5465)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560)
at android.view.View.measure(View.java:17448)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2031)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1189)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1402)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1077)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5884)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
and there goes the layout
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity">
<include
android:id="@+id/tool_bar"
layout="@layout/tool_bar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
/>
<com.example.ic071034.materialstabs.SlidingTabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="2dp"
android:background="@color/ColorPrimary"/>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_weight="1">
</android.support.v4.view.ViewPager>
</LinearLayout>
tab layout
<?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="match_parent">
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Upvotes: 0
Views: 1040
Reputation: 3721
listContact = GetlistContact();
adapter=new ListviewContactAdapter(getActivity(), listContact);
mListView.setAdapter(adapter);
Move these lines on onCreateView
Upvotes: 3