Fragment disappears after setAdapter on ListView

Christian

I have a ListView in a Fragment containing also some other UI-Elements. Everything works until I call setAdapter on the ListView. In that moment I can debug that the ListView is filled with the elements but immmediately after the whole fragment disappears (including the other UI-Elements). If I set the Adapter 0,1 seconds later, everything works.

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    mView = inflater.inflate(R.layout.fragment_listview, null);
    mListView = (ListView)mView.findViewById(R.id.list_items);

    TextView emptyView = (TextView)mView.findViewById(R.id.text_empty);
    mListView.setEmptyView(emptyView);

    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            // this is the only work around to not make the list view disappear
            loadContacts();
        }
    }, 100);
    // if I call loadContacts() here, the Fragment disappears

    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Person p = mContacts.get(position);
            if (pickerInterface != null) {
                pickerInterface.pickedContact(p);
            }
        }
    });
    return mView;
}


public void loadContacts() {
    mContacts = ContactsDataSource.getAllPhoneContacts(getActivity(), true);
    mAdapter = new ContactsAdapter(getActivity());
    mAdapter.mContacts = mContacts;
    mAdapter.isPlainList = true;
    // after the following line the Fragment is filled and then immediately disappears
    mListView.setAdapter(mAdapter);
}

the ContactsAdapter is very simple:

public class ContactsAdapter extends BaseAdapter {
    public List<Person> mContacts = new ArrayList<Person>();
    public Activity context;

    // Constructor
    public ContactsAdapter(Activity c){
        context = c;
    }

    @Override
    public int getCount() {
        return mContacts.size();
    }

    public Person getItem(int position){
        return mContacts.get(position);
    }

    @Override
    public boolean isEmpty()
    {
        return mContacts.size() == 0;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @SuppressLint("InflateParams")
    public View getView(int position, View convertView, ViewGroup viewGroup) {
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.list_item_contact, null);
        }
        Person person = mContacts.get(position);

        TextView tvName = (TextView) convertView.findViewById(R.id.text_name);
        tvName.setText(person.getDisplayName());
        return convertView;
    }
}

I have spent hours debugging and searching for reasons and have no clue. Thanks for any idea.

Edit: XML as following:

<?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"
    android:background="@color/white" >

    <ListView
        android:id="@+id/list_items"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/line_horizontal"
        android:layout_alignParentTop="true" />

    <TextView
        android:id="@+id/text_empty"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="15dp"
        android:layout_alignParentTop="true"
        android:text="@string/label_no_entries"
        android:textColor="@color/grey"
        android:textSize="21sp" />

    <View
        android:id="@+id/line_horizontal"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_above="@+id/layout_navigation"
        android:background="@color/black" />

    <RelativeLayout
        android:id="@+id/layout_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" >

        <TextView
            android:id="@+id/text_scrollback"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:drawablePadding="10dp"
            android:drawableRight="@drawable/backward"
            android:gravity="center_vertical"
            android:paddingBottom="15dp"
            android:paddingLeft="10dp"
            android:paddingTop="15dp"
            android:text="@string/activity_contacts_backward_label"
            android:textColor="@color/mediumgrey" />

        <View
            android:id="@+id/view_coverback"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/text_scrollback"
            android:layout_alignParentLeft="true"
            android:layout_alignRight="@+id/text_scrollback"
            android:layout_alignTop="@+id/text_scrollback"
            android:background="#c0ffffff" />

        <TextView
            android:id="@+id/text_scrollforward"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:drawableLeft="@drawable/forward"
            android:drawablePadding="10dp"
            android:gravity="center_vertical"
            android:paddingBottom="15dp"
            android:paddingRight="10dp"
            android:paddingTop="15dp"
            android:text="@string/activity_contacts_forward_label"
            android:textColor="@color/mediumgrey" />

        <View
            android:id="@+id/view_coverforward"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/text_scrollforward"
            android:layout_alignParentRight="true"
            android:layout_alignLeft="@+id/text_scrollforward"
            android:layout_alignTop="@+id/text_scrollforward"
            android:background="#c0ffffff" />

        <TextView
            android:id="@+id/text_pages"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/text_scrollforward"
            android:layout_toLeftOf="@+id/text_scrollforward"
            android:layout_toRightOf="@+id/text_scrollback"
            android:gravity="center"
            android:textColor="@color/mediumgrey"
            android:textSize="17sp" />
    </RelativeLayout>

</RelativeLayout>
Christian

Thank you for all your support. By removing all code and re-assembling step by step I foundt the reason. Just in case someone runs in the same problem one day.

I had an OnScrollListener on the ListView declared in the superclass. In the OnScrollListener I was hiding the navigation Arrows on demand with Visibility.GONE. Even if the NavigationArrows did not affect the layout of the ListView this was the problem. By setting Visibility.INVISIBLE everything works fine. I guess this is related to some re-drawing-issue of the whole layout that does not work.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Fragment disappears after setAdapter on ListView

From Dev

Fragment with ListView: NullPointerException on setAdapter

From Dev

Fragment in Activity is gets context null in setAdapter for ListView

From Dev

In a fragment implementation, the ListView below EditText disappears after setting keypad element (of EditText view) to hide

From Dev

ListView disappears after reloading it again

From Dev

Android - ListView disappears after setContentView()?

From Dev

ListView disappears after reloading it again

From Dev

Android - setAdapter in Fragment

From Dev

Android fragment tabbed layout, reselecting tab 3, listview disappears

From Dev

fragment disappears

From Dev

ListView SetAdapter NullPointerException

From Dev

Multiple setAdapter in ListView

From Dev

NullPointer exception in setAdapter in ListView

From Dev

Overriding setAdapter in subclass of ListView

From Dev

ListView SetAdapter NullPointerException

From Dev

Inflate a ListView inside a OnItemSelectedListener that is inside a Fragment - java.lang.Null Error in setAdapter

From Dev

setadapter in expandablelistview different from setadapter in listview?

From Dev

NullPointerException: Calling setAdapter in Fragment Class

From Dev

ListView disappears when returning to activity after clicking Up button

From Dev

Data disappears from ListView after assigning new data to ItemsSource

From Dev

Listview position is incorrectly restored after that fragment destroyed

From Dev

Problems with showing listView in fragment after orientation change

From Dev

Refreshing Fragment with ListView after theme change on container

From Dev

android listview null trying to setAdapter()

From Dev

listView.setAdapter is so sluggish?

From Dev

listView.setAdapter is so sluggish?

From Dev

Listview setAdapter Null Pointer Exception

From Dev

android listview null trying to setAdapter()

From Dev

Fragment Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference

Related Related

  1. 1

    Fragment disappears after setAdapter on ListView

  2. 2

    Fragment with ListView: NullPointerException on setAdapter

  3. 3

    Fragment in Activity is gets context null in setAdapter for ListView

  4. 4

    In a fragment implementation, the ListView below EditText disappears after setting keypad element (of EditText view) to hide

  5. 5

    ListView disappears after reloading it again

  6. 6

    Android - ListView disappears after setContentView()?

  7. 7

    ListView disappears after reloading it again

  8. 8

    Android - setAdapter in Fragment

  9. 9

    Android fragment tabbed layout, reselecting tab 3, listview disappears

  10. 10

    fragment disappears

  11. 11

    ListView SetAdapter NullPointerException

  12. 12

    Multiple setAdapter in ListView

  13. 13

    NullPointer exception in setAdapter in ListView

  14. 14

    Overriding setAdapter in subclass of ListView

  15. 15

    ListView SetAdapter NullPointerException

  16. 16

    Inflate a ListView inside a OnItemSelectedListener that is inside a Fragment - java.lang.Null Error in setAdapter

  17. 17

    setadapter in expandablelistview different from setadapter in listview?

  18. 18

    NullPointerException: Calling setAdapter in Fragment Class

  19. 19

    ListView disappears when returning to activity after clicking Up button

  20. 20

    Data disappears from ListView after assigning new data to ItemsSource

  21. 21

    Listview position is incorrectly restored after that fragment destroyed

  22. 22

    Problems with showing listView in fragment after orientation change

  23. 23

    Refreshing Fragment with ListView after theme change on container

  24. 24

    android listview null trying to setAdapter()

  25. 25

    listView.setAdapter is so sluggish?

  26. 26

    listView.setAdapter is so sluggish?

  27. 27

    Listview setAdapter Null Pointer Exception

  28. 28

    android listview null trying to setAdapter()

  29. 29

    Fragment Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference

HotTag

Archive