westberg
westberg

Reputation: 167

Fragment containing customized ListView

I am stuck, I dont get how to implement a ListView that is inside a Fragment, I am trying to make a chat gui.

Is it possible to do something like this or am I totaly out in the wind?

Thanks for help! Regards a newbie! ^^

Here is the Fragment code:

public static class ChatFragment extends Fragment {

        public ChatFragment() {
            // Empty constructor required for fragment subclasses
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_chat, container, false);

            /*FragmentManager fm =  getActivity().getFragmentManager();
            DataListFragment list = new DataListFragment();
            fm.beginTransaction().add(R.id.list_message_History, list).commit();
            */

            getActivity().setTitle(R.string.chat);
            return rootView;
        }
    }

But as u see I dont udnerstand how to connect it all. I have med a customized ListFragment that uses a ArrayAdapter to handle the data.

Here is my layout file:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent">

    <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="wrap_content"
                  android:id="@id/android:list"
                  android:orientation="horizontal">
        <ListView android:id="@android:id/list"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:drawSelectorOnTop="false"/>
    </LinearLayout>


    <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="horizontal">
        <EditText android:id="@+id/edit_message"
                  android:layout_weight="1"
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:hint="@string/edit_message" />
        <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/button_send" />
    </LinearLayout>
</LinearLayout>

Upvotes: 2

Views: 2932

Answers (2)

Steve Benett
Steve Benett

Reputation: 12933

You don't have to add another Fragment inside your ChatFragment to just have a ListView. Get a reference for the ListView out of your layout like this:

ListView list = (ListView)rootView.findViewById(R.id.list);

Now set the adapter and the Array/List to it and you're done.

And don't make a Fragment transaction inside a Fragment. Use your Activity and the DrawerLayout for this job.

Upvotes: 1

bakriOnFire
bakriOnFire

Reputation: 2681

No need of ChatFragment

Make you activity a FragmentActivity and directly inflate the layout(R.layout.fragment_chat) with the ListFragment in that Activity.

class MainActivity extends FragmentActivity {
   onCreate(Bundle extra) {
   ...
   setContentView(R.layout.fragment_chat);
   ...
}
}

Check this example for using ListFragments.

Upvotes: 0

Related Questions