-1

Ok, i'm tring to do this:

An application which have two tabs and in one tab here should have a listView

Example:

http://picu.site11.com/images/91866108b08a600a1a7400bb1ed63a9ed82dc2a5.png

My problem: i have created the ListView and a TextView for the adapter. But every time i call setAdapter in the ListView the application timeout

OK, the first tab have this xml file (view1.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">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/listView"/>
</LinearLayout>

Its the class of the fragment:

public class Chats extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        View view = inflater.inflate(R.layout.view1, container, false);
        ListView listView = (ListView) view.findViewById(R.id.listView);

        String[] arr = {"A", "B", "C", "D", "E", "F"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), R.layout.row, R.id.listView, arr);
        //listView.setAdapter(adapter);
        //Log.d("MY_LOGS", "listView == null: " + (listView == null));

        return view;
    }
}

The file row.xml where is located the TextView

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                                        android:layout_width="fill_parent"
                                                        android:layout_height="?android:attr/listPreferredItemHeight"
                                                        android:padding="6dip" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/viewText"
        />


</RelativeLayout>

If i comment out the listView.setAdapter the application timeout with NullPointerException exception..

ERROR/AndroidRuntime(18321): FATAL EXCEPTION: main
        java.lang.NullPointerException
        at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:392)
        at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
        at android.widget.AbsListView.obtainView(AbsListView.java:2624)
        at android.widget.ListView.measureHeightOfChildren(ListView.java:1254)
        at android.widget.ListView.onMeasure(ListView.java:1166)
        at android.view.View.measure(View.java:16831)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5245)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
        at android.view.View.measure(View.java:16831)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5245)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
        at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1052)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:590)
        at android.view.View.measure(View.java:16831)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5245)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
        at android.view.View.measure(View.java:16831)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5245)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
        at android.view.View.measure(View.java:16831)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5245)
        at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:302)
        at android.view.View.measure(View.java:16831)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5245)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2586)
        at android.view.View.measure(View.java:16831)
        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2186)
        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1349)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1532)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6350)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791)
        at android.view.Choreographer.doCallbacks(Choreographer.java:591)
        at android.view.Choreographer.doFrame(Choreographer.java:561)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777)
        at android.os.Handler.handleCallback(Handler.java:730)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5419)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
        at dalvik.system.NativeStart.main(Native Method)

What can be the problem? Nothing are null..

Marco Acierno
  • 14,682
  • 8
  • 43
  • 53

1 Answers1

2

Use the proper id:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), R.layout.row, R.id.viewText, arr);
user
  • 86,916
  • 18
  • 197
  • 190
  • Uh, works.. thanks! While reading android doc, resource The resource ID for a layout file containing a layout to use when instantiating views. textViewResourceId The id of the TextView within the layout resource to be populated so with resource it means the XML where the TextView is contained, textViewResourceId the ID of the TextView.. right? Thanks again! – Marco Acierno Nov 02 '13 at 12:41
  • 1
    @MarcoLopezAcierno Yes, the `textViewResourceId` is the id of a the `TextView` from the row layout. Have a look at this http://stackoverflow.com/questions/9280965/arrayadapter-requires-the-resource-id-to-be-a-textview-xml-problems/9282069#9282069 for some info as well. – user Nov 02 '13 at 12:49