I am trying to create a list view that contains images and text inside a fragment that is in a tabbed view pane, so I can scroll left or right to bring up another fragment.
I am relatively new to android, so what I can do may be completely wrong. I can build the project perfectly, but then when the emulator starts to crash it (the log is displayed at the bottom of the page).
I created a separate application and was able to successfully create a list view, but when I try to combine it inside a fragment, it does not work. Here is my next code
MainActivity.java
import java.util.ArrayList; import java.util.List; import java.util.Locale; import android.app.ListFragment; import android.content.Intent; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBar; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v4.app.FragmentPagerAdapter; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.view.Gravity; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends ActionBarActivity implements ActionBar.TabListener { SectionsPagerAdapter mSectionsPagerAdapter; ViewPager mViewPager; private List<Posts> myPosts = new ArrayList<Posts>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
NotMainActivity.java
public class NotMainActivity extends FragmentActivity { private List<Posts> myPosts = new ArrayList<Posts>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); populatePostList(); populateListView(); registerClickCallBack(); System.out.print("Main Activity Started"); } private void populatePostList() { myPosts.add(new Posts("Ottawa, Ontario", "787", "Picture of my Dog!", R.drawable.dog)); myPosts.add(new Posts("Ottawa, Ontario", "787", "Picture of my Dog!", R.drawable.dog)); myPosts.add(new Posts("Ottawa, Ontario", "787", "Picture of my Dog!", R.drawable.dog)); myPosts.add(new Posts("Ottawa, Ontario", "787", "Picture of my Dog!", R.drawable.dog)); myPosts.add(new Posts("Ottawa, Ontario", "787", "Picture of my Dog!", R.drawable.dog)); myPosts.add(new Posts("Ottawa, Ontario", "787", "Picture of my Dog!", R.drawable.dog)); myPosts.add(new Posts("Ottawa, Ontario", "787", "Picture of my Dog!", R.drawable.dog)); myPosts.add(new Posts("Ottawa, Ontario", "787", "Picture of my Dog!", R.drawable.dog)); } private void populateListView() { ArrayAdapter<Posts> adapter = new MyListAdapter(); ListView list = (ListView) findViewById(android.R.id.list); list.setAdapter(adapter); }
Posts.java
public class Posts { private String postlocation; private String postvote; private String posttitle; private int iconID; public Posts(String postlocation, String postvote, String posttitle, int iconID) { this.postlocation = postlocation; this.postvote = postvote; this.posttitle = posttitle; this.iconID = iconID; } public String getPostlocation() { return postlocation; } public String getPostvote() { return postvote; } public String getPosttitle() { return posttitle; } public int getIconID() { return iconID; }
TheWallFragment.java
public class TheWallFragment extends android.support.v4.app.ListFragment { List<Posts> myPosts = new ArrayList<Posts>(); private String[] strListView; private ListView myListView; private int number; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.wall_layout, container, false); return rootView; } }
activity_main.xml
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" />
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.gnumbu.errolgreen.testing" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".NotMainActivity"> </activity> </application> </manifest>
item_view.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/item_postImage" android:src="@drawable/dog" android:maxWidth="80dp" android:minHeight="80dp" android:adjustViewBounds="true" android:layout_marginLeft="14dp" android:layout_marginStart="14dp" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/item_upvoteArrow" android:layout_toEndOf="@+id/item_upvoteArrow" android:layout_alignBottom="@+id/item_downvotearrow" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is my dog! My Dog is amazing, give it a lick!" android:id="@+id/item_postText" android:paddingStart="5dp" android:layout_above="@+id/item_downvotearrow" android:layout_toRightOf="@+id/item_postImage" android:layout_toEndOf="@+id/item_postImage" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/item_upvoteArrow" android:src="@drawable/upvotearrow" android:maxHeight="24dp" android:maxWidth="24dp" android:adjustViewBounds="true" android:layout_alignParentTop="true" android:layout_alignLeft="@+id/item_downvotearrow" android:layout_alignStart="@+id/item_downvotearrow" android:clickable="true" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/item_downvotearrow" android:src="@drawable/downvotearrow" android:maxWidth="24dp" android:maxHeight="24dp" android:adjustViewBounds="true" android:layout_marginLeft="9dp" android:layout_marginStart="9dp" android:layout_below="@+id/item_postVoteText" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:longClickable="false" android:clickable="true" /> <TextView android:layout_height="wrap_content" android:text="22" android:id="@+id/item_postVoteText" android:maxHeight="20dp" android:focusableInTouchMode="false" android:visibility="visible" android:singleLine="true" android:gravity="center" android:enabled="true" android:layout_below="@+id/item_upvoteArrow" android:layout_alignLeft="@+id/item_upvoteArrow" android:layout_alignStart="@+id/item_upvoteArrow" android:nestedScrollingEnabled="false" android:layout_width="wrap_content" android:layout_toStartOf="@+id/item_postImage" /> </RelativeLayout>
wall_layout.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Text" android:id="@+id/textView" android:layout_gravity="center_horizontal" /> <ListView android:id="@android:id/list" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
Error log
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5223) 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:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference at com.gnumbu.errolgreen.testing.NotMainActivity.populateListView(NotMainActivity.java:70) at com.gnumbu.errolgreen.testing.NotMainActivity.onCreate(NotMainActivity.java:43) at android.app.Activity.performCreate(Activity.java:5937) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5223) 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:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
New mistake
Process: com.gnumbu.errolgreen.testing, PID: 5304 java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.View.getImportantForAccessibility()' on a null object reference at android.widget.AbsListView.obtainView(AbsListView.java:2360) at android.widget.ListView.measureHeightOfChildren(ListView.java:1270) at android.widget.ListView.onMeasure(ListView.java:1182) at android.view.View.measure(View.java:17430) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 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:17430) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) at android.widget.FrameLayout.onMeasure(FrameLayout.java:430) at android.view.View.measure(View.java:17430) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 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:17430) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 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:17430) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779) 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:5221) 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:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)