wake-up-neo.com

Android + ListFragment mit einer benutzerdefinierten Ansichtshierarchie

Ich versuche, das Fragmentlayout anzupassen, indem ich meine eigene Ansichtshierarchie aus onCreateView(LayoutInflater, ViewGroup, Bundle) zurückgebe. Dies bläst meine benutzerdefinierte Ansicht auf, scheint aber die Ansichten zu stapeln, anstatt sie in mir aufzublasen. Ich sehe alles auf einmal. Jede Hilfe wird geschätzt.

MyActivity.Java:

public class MyActivity extends FragmentActivity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (getSupportFragmentManager().findFragmentById(Android.R.id.content) == null) {
            ArrayListFragment list = new ArrayListFragment();
            getSupportFragmentManager().beginTransaction().add(Android.R.id.content, list).commit();
        }
    }

    public static class ArrayListFragment extends ListFragment {

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            inflater.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
            inflater.inflate(R.layout.main, container);
            return super.onCreateView(inflater, container, savedInstanceState);
        }

        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            String List[] = {"Larry", "Moe", "Curly"}; 
            setListAdapter(new ArrayAdapter<String>(getActivity(), Android.R.layout.simple_list_item_1, List));
        }
    }
}

main.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"
  Android:paddingLeft="8dp"
  Android:paddingRight="8dp">

  <Button
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:text="THIS IS A BUTTON" />

  <ListView
    Android:id="@Android:id/list"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="#00FF00"
    Android:layout_weight="1"
    Android:drawSelectorOnTop="false" />

  <TextView
    Android:id="@Android:id/empty"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="#FF0000"
    Android:text="No data" />
</LinearLayout>
17
worked

Ich habe die neue Ansicht nicht innerhalb der onCreateView-Methode der ListFragment-Klasse zurückgegeben. Zum Beispiel:

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
            View view = inflater.inflate(R.layout.main, null);
            return view;
        }

Alles funktioniert jetzt gut im Land von Android!

34
worked

optimierter Weg und Schusscode

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.list_alphabet, container, false);
    }
2
codercat

Ich denke, du solltest es besser machen

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle  savedInstanceState) {
 View root = inflater.inflate(R.layout.main, container, false);
 return root;
 }
2
Maurizio Basile
getSupportFragmentManager().beginTransaction().add(Android.R.id.content, list).commit();

Liste wird nicht akzeptiert, es wird nach einem Fragment gesucht.

1
Archie

benutze dieses Muster, funktioniert perfekt!

inflater.inflate(R.layout.list_layout, container, false);

public View inflate (XmlPullParser-Parser, ViewGroup-Stamm, Boolean attachToRoot)

attachToRoot Soll die aufgeblasene Hierarchie an den root-Parameter angehängt werden? Wenn false, wird root nur verwendet, um die richtige Unterklasse von LayoutParams für die Stammansicht im XML zu erstellen.

0
hoot