Moin,
ich nutze gerade das AndroidSlidingUpPanel mit einem ListView als Main Layout und einem Relative Layout als Sliding Panel. Hier die XML Datei:
[src=xml]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
androidrientation="vertical" >
<com.sothree.slidinguppanel.SlidingUpPanelLayout
xmlns:sothree="http://schemas.android.com/apk/lib/com.sothree.slidinguppanel"
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bar_background"
android:gravity="bottom"
androidrientation="horizontal"
sothree:collapsedHeight="40dp" >
<ListView
android:id="@+id/song_list"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="42"
android:fastScrollEnabled="true" />
<RelativeLayout
android:id="@+id/bottom_bar_preview"
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="@color/bar_background"
androidrientation="horizontal" >
</RelativeLayout>
</com.sothree.slidinguppanel.SlidingUpPanelLayout>
</LinearLayout>
[/src]
Das Problem ist nun, dass der Inhalt der Liste erst sichtbar wird, nachdem man das Relative Layout einmal nach oben und wieder nach unten gewischt hat. Das SlidingUpPanelLayout selbst liegt in einem Fragment, welches dann von einem FragmentPagerAdapter zur Verfügung gestellt wird. Ich habe außerdem gemerkt, dass der Inhalt der Liste verschwindet, wenn man sich zwei Tabs von dem Fragment entfernt.
Hier ist der Code vom Fragment:
[src=java]
public abstract class Songs extends Fragment {
protected ArrayList<String> elements;
protected SonglistAdapter adapter;
public Songs(ArrayList<String> es) {
elements = es;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
LinearLayout rootView = (LinearLayout) inflater.inflate(R.layout.list_songlist, container, false);
ListView lview = (ListView) rootView.findViewById(R.id.song_list);
adapter = new SonglistAdapter(inflater, elements);
lview.setAdapter(adapter);
return rootView;
}
}
[/src]
und der Adapter:
[src=java]
public class SonglistAdapter extends BaseAdapter {
private ArrayList<String> elements;
private LayoutInflater inflater;
public SonglistAdapter(LayoutInflater infl, ArrayList<String> es) {
elements = es;
inflater = infl;
}
@Override
public int getCount() {
return elements.size();
}
@Override
public Object getItem(int i) {
return elements.get(i);
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
RelativeLayout layer = (RelativeLayout) inflater.inflate(R.layout.list_songlist_item, parent, false);
// fill current item with information
TextView view = (TextView) layer.findViewById(R.id.song_title);
view.setText(elements.get(position));
return layer;
}
}
[/src]
Das Fragment wird wie folgt erstellt:
[src=java]
ArrayList<String> arr = new ArrayList<String>();
arr.add("Hello");
arr.add("Bye");
ContentHandler.overviewFragment = new Overview(arr);
[/src]
'ContentHandler.overviewFragment' wird dann in 'public Fragment getItem(int index)' returned.
Ich habe schon durch den Code vom AndroidSlidingUpPanel geschaut und dachte, dass ich die Ursache des Fehlers in dieser Datei in 'protected void onLayout(boolean changed, int l, int t, int r, int b)' finden könnte.
Leider konnte ich zwischen den Aufrufen vor und nach Bedienung des Sliding Layouts keinen Unterschied feststellen.
Hat jemand von euch eine Ahnung, was ich falsch machen könnte?
Vielen Dank für jeden Tipp,
kpj
ich nutze gerade das AndroidSlidingUpPanel mit einem ListView als Main Layout und einem Relative Layout als Sliding Panel. Hier die XML Datei:
[src=xml]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
androidrientation="vertical" >
<com.sothree.slidinguppanel.SlidingUpPanelLayout
xmlns:sothree="http://schemas.android.com/apk/lib/com.sothree.slidinguppanel"
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bar_background"
android:gravity="bottom"
androidrientation="horizontal"
sothree:collapsedHeight="40dp" >
<ListView
android:id="@+id/song_list"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="42"
android:fastScrollEnabled="true" />
<RelativeLayout
android:id="@+id/bottom_bar_preview"
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="@color/bar_background"
androidrientation="horizontal" >
</RelativeLayout>
</com.sothree.slidinguppanel.SlidingUpPanelLayout>
</LinearLayout>
[/src]
Das Problem ist nun, dass der Inhalt der Liste erst sichtbar wird, nachdem man das Relative Layout einmal nach oben und wieder nach unten gewischt hat. Das SlidingUpPanelLayout selbst liegt in einem Fragment, welches dann von einem FragmentPagerAdapter zur Verfügung gestellt wird. Ich habe außerdem gemerkt, dass der Inhalt der Liste verschwindet, wenn man sich zwei Tabs von dem Fragment entfernt.
Hier ist der Code vom Fragment:
[src=java]
public abstract class Songs extends Fragment {
protected ArrayList<String> elements;
protected SonglistAdapter adapter;
public Songs(ArrayList<String> es) {
elements = es;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
LinearLayout rootView = (LinearLayout) inflater.inflate(R.layout.list_songlist, container, false);
ListView lview = (ListView) rootView.findViewById(R.id.song_list);
adapter = new SonglistAdapter(inflater, elements);
lview.setAdapter(adapter);
return rootView;
}
}
[/src]
und der Adapter:
[src=java]
public class SonglistAdapter extends BaseAdapter {
private ArrayList<String> elements;
private LayoutInflater inflater;
public SonglistAdapter(LayoutInflater infl, ArrayList<String> es) {
elements = es;
inflater = infl;
}
@Override
public int getCount() {
return elements.size();
}
@Override
public Object getItem(int i) {
return elements.get(i);
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
RelativeLayout layer = (RelativeLayout) inflater.inflate(R.layout.list_songlist_item, parent, false);
// fill current item with information
TextView view = (TextView) layer.findViewById(R.id.song_title);
view.setText(elements.get(position));
return layer;
}
}
[/src]
Das Fragment wird wie folgt erstellt:
[src=java]
ArrayList<String> arr = new ArrayList<String>();
arr.add("Hello");
arr.add("Bye");
ContentHandler.overviewFragment = new Overview(arr);
[/src]
'ContentHandler.overviewFragment' wird dann in 'public Fragment getItem(int index)' returned.
Ich habe schon durch den Code vom AndroidSlidingUpPanel geschaut und dachte, dass ich die Ursache des Fehlers in dieser Datei in 'protected void onLayout(boolean changed, int l, int t, int r, int b)' finden könnte.
Leider konnte ich zwischen den Aufrufen vor und nach Bedienung des Sliding Layouts keinen Unterschied feststellen.
Hat jemand von euch eine Ahnung, was ich falsch machen könnte?
Vielen Dank für jeden Tipp,
kpj
Zuletzt bearbeitet: