2

リストフラグメント内に2つのリストビューを実装しようと取り組んでいます.xmlに2つのリストビューを記述し、Javaファイルに2つの別々のデータセットを設定しようとしましたが、最初のリスビュー用のリストビューデータはによって上書きされます二番目。

以下のコードを使用して正しいリストビューを指すにはどうすればよいでしょうか?

リストが移動するフラグメントの Java:

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>

リスト ビューでは、リストごとにカスタム レイアウトも使用されます。

4

2 に答える 2

7

それぞれに応じて2つのアダプターを設定する必要がありListViewます....

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

list.setAdapter(...)
list2.setAdapter(...)

...しかし、あなたは 2 枚持っていませんListViewsListFragment呼び出すたびにを使用すると、指定されたコンテンツに単一setAdapterの を設定します。を調整して、フラグメント内に2 つに分けてから、上記のようにそれぞれ独自のアダプターを設定する必要があります。 ListViewListFragementFragmentListViews

于 2012-12-19T18:53:24.807 に答える
0

setListAdapterデフォルトのターゲットを想定しています。2 番目のアダプターを設定するには、2 番目のリストビュー ID を見つけて、2 番目のアダプターをそれに設定する必要があります。

listview = findViewById(R.id.list2);
listview.setAdapter(adapter2);

リストフラグメントは通常、単一のリストのみを想定しているため、上記が機能しない可能性があることに注意してください。通常のフラグメントを使用して、両方のリストに対して上記を実行する必要がある場合があります。

于 2012-12-19T18:56:22.450 に答える