列表片段内的多个列表视图 [英] multiple listview inside listfragment
问题描述
我一直在尝试在一个列表片段中实现两个列表视图,我在我的 xml 中声明了两个列表视图,并试图在 java 文件中设置两组单独的数据,但列表视图数据用于第一个 lisview被第二个覆盖.
I have been working on trying to implement two listviews inside a list fragment, I have stated two list views in my xml and tried to set two seperate sets of data in the java file but the list view data intended for the first lisview is overwritten by the second.
如何使用下面的代码将其指向正确的列表视图?
How would I be able to point it to the correct listviews using the code below?
Java 用于列表应该去的片段:
Java for fragment where list should go:
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","Dummy@dummymail.com"},
{"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:
<?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>
列表视图还为每个列表使用自定义布局.
The list view also uses a custom layout for each list.
推荐答案
您需要为每个 ListView
相应地设置两个适配器....
You need to set the two adapters accordingly with each ListView
....
ListView list = (ListView)findViewById(R.id.list);
ListView list2 = (ListView)findViewById(R.id.list2);
list.setAdapter(...)
list2.setAdapter(...)
...但是你没有两个 ListViews
在玩.在每次调用 setAdapter
时使用 ListFragment
时,您都为给定的内容设置了 single ListView
.您需要将 ListFragement
调整为 Fragment
并在 Fragment 中有两个单独的 ListViews
,然后使用自己的适配器设置每个如上所述.
...however you do not have two ListViews
in play. In using a ListFragment
each time you call setAdapter
you are setting a single ListView
to the given contents. You would need to adjust your ListFragement
to be that of a Fragment
and have two separate ListViews
within the Fragment, then set each with its own adapter as mentioned above.
这篇关于列表片段内的多个列表视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!