mehrere listview-innen listfragment
Ich haben daran gearbeitet, zu versuchen, zwei listviews in einer Liste fragment, die ich angeführt habe zwei Listen-Ansichten in meine xml und versucht, zwei getrennte Sätze von Daten in der java-Datei, aber die Liste anzeigen von Daten für die erste lisview überschrieben wird, indem die zweite.
Wie würde ich in der Lage sein zu zeigen Sie es auf die richtige listviews mit dem code unten?
Java für fragment-wo-Liste gehen sollte:
package com.owais.shopsellswap;
import java.util.ArrayList;
import java.util.HashMap;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SimpleAdapter;
public class Fragment_My_Profile extends ListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View myProfileView = inflater.inflate(R.layout.fragment_my_profile, container, false);
return myProfileView;
}
//Store Arralist as hashmaps for the listview
ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
ArrayList<HashMap<String,String>> list2 = new ArrayList<HashMap<String,String>>();
//SimpleAdapter (listViewAdapter) links the array to the listview
private SimpleAdapter listViewAdapter;
private SimpleAdapter listViewAdapter2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//HashMap links each line of data to the correct TextView
HashMap<String,String> item;
for(int i=0;i<userInfo.length;i++){
item = new HashMap<String,String>();
item.put( "line1", userInfo[i][0]);
item.put( "line2", userInfo[i][1]);
list.add( item );
}
HashMap<String,String> item2;
for(int i=0;i<ListingsArray.length;i++){
item2 = new HashMap<String,String>();
item2.put( "line1", ListingsArray[i][0]);
item2.put( "line2", ListingsArray[i][1]);
item2.put( "line3", ListingsArray[i][2]);
list2.add( item2 );
}
listViewAdapter = new SimpleAdapter(getActivity(), list,
R.layout.listview_layout_1,
new String[] { "line1","line2" },
new int[] {R.id.line_a, R.id.line_b});
listViewAdapter2 = new SimpleAdapter(getActivity(), list2,
R.layout.listview_layout_3,
new String[] { "line1","line2", "line3" },
new int[] {R.id.line_a1, R.id.line_b1, R.id.line_c1});
setListAdapter(listViewAdapter);
setListAdapter(listViewAdapter2);
}
private String[][] userInfo =
{{"User","Dummy"},
{"Email Address","[email protected]"},
{"User Type","Staff"},
{"Contact Number","07111111111"}};
private String[][] ListingsArray =
{{"audi a3","brand new audi a3 with alloywheels, cd player", "£11000"},
{"HTC One x","brand new android smartphone", "£450"},
{"Acer Laptop","Acer Laptop with windows 7", "£300"},
{"Sunglass","Oakley Sunglasses in great condition", "£100"}};
}
xml-Code für das fragment:
<?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="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/lightgrey"
android:text="@string/userInfoHeader"
android:textSize="15sp"
android:textStyle="bold" />
<ListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="184dp"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView2" >
</ListView>
<TextView
android:id="@+id/textView3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/android:list"
android:background="@color/lightgrey"
android:text="@string/listingsHeader"
android:textSize="15sp"
android:textStyle="bold" />
<ListView
android:id="@+id/android:list2"
android:layout_width="fill_parent"
android:layout_height="184dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true" >
</ListView>
</RelativeLayout>
In der Liste anzeigen verwendet auch ein eigenes layout für jede Liste.
- Dieser Satz ist, was wirklich mich warf "ich haben daran gearbeitet, zu versuchen, zwei listviews in einer Liste fragment". AFAIK ist Dies nicht möglich, da ein ListFragment ist nur konstruiert, um eine ListView mit der id @+id/android:list. Nun, was Sie tun können, ist, einfach erstellen zwei separaten ListFragments insgesamt, und Ihnen Haus in einer FragmentActivity. Dann könnten Sie einfach tauschen Sie Sie, verschieben, ersetzen, vergrößern, verkleinern tun, was Sie will, Sie aus dem Kontext, dass eine Aktivität. Dies scheint das zu sein, was Sie für gehen sowieso.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die beiden Adapter entsprechend mit jedem
ListView
.......aber Sie haben nicht zwei
ListViews
im Spiel. Mit einemListFragment
jedes mal, wenn Sie anrufensetAdapter
Sie eine singleListView
auf den gegebenen Inhalt. Sie würden anpassen müssen, um IhreListFragement
zu sein, dass dasFragment
und haben zwei separateListViews
innerhalb des Fragments, jeden mit seinen eigenen adapter, wie oben erwähnt.setListAdapter
übernimmt das Standard-Ziel. An den zweiten adapter, den Sie brauchen zu finden, die zweite listview-id und legen Sie dann den zweiten adapter, um es.Beachten Sie, dass ein listfragment in der Regel erwartet, dass nur eine einzige Liste, damit die oben genannten.könnte nicht funktionieren, müssen Sie möglicherweise nur einen regulären fragment und die oben genannten.für beide Listen.