3

simpleadapter と hashmap を使用して listview(4columns) を設定しました。リストビューの各列に名前を付けたいと思います。

私のリストビューは、4 つのテキストビューを持つ線形レイアウト内に表示されます。

ここで、各列の属性名を取得するために、2 つの線形レイアウトを作成しようとしました。上部の線形レイアウトには属性名を持つ 4 つのテキストビューがあり、下部の線形レイアウトには simpleadapter からのデータがあります。そして、2 つのリニア レイアウトを別のリニア レイアウト内に配置します。

そして、これは私が望むようには機能しませんでした...私はアンドロイドにかなり慣れていません。助けてください。

編集:

これが私のコードです:

public class MultiList extends ListActivity {

ListView lv;
SimpleAdapter sd;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Calendar c = Calendar.getInstance();
    lv = getListView();
    ArrayList<HashMap<String, String>> aList = new ArrayList<HashMap<String,String>>();
    HashMap<String, String> map = new HashMap<String, String>();
    map.put("Date", ""+c.get(Calendar.DATE));
    map.put("Month", ""+c.get(Calendar.MONTH)+1);
    map.put("Time", "" + new Date().toString());
    aList.add(map);
    map = new HashMap<String, String>();
    map.put("Date", ""+c.get(Calendar.DATE));
    map.put("Month", ""+c.get(Calendar.MONTH)+1);
    map.put("Time", "" + new Date().toString());
    aList.add(map);
    map = new HashMap<String, String>();
    map.put("Date", ""+c.get(Calendar.DATE));
    map.put("Month", ""+c.get(Calendar.MONTH)+1);
    map.put("Time", "" + new Date().toString());
    aList.add(map);
    sd= new SimpleAdapter(this, aList, R.layout.main, new String[]{"Date","Month","Time"}, new int[]{R.id.studentID,R.id.studentAge,R.id.studentName});
    lv.setAdapter(sd);



   // insertData();


}

私のmain.xml

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/linear1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
        android:paddingBottom="6dip"
        android:paddingTop="4dip" >

        <TextView
            android:layout_width="90dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="student ID" />

        <TextView
            android:layout_width="90dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="student Age" />

        <TextView
            android:layout_width="90dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="student Name" />
    </LinearLayout>

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/linear1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
        android:paddingBottom="6dip"
        android:paddingTop="4dip" >

        <TextView
            android:id="@+id/studentID"
            android:layout_width="90dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
             />

        <TextView
            android:id="@+id/studentAge"
            android:layout_width="90dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
           />

        <TextView
            android:id="@+id/studentName"
            android:layout_width="90dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
             />
    </LinearLayout>

</LinearLayout>

問題は、各属性名 (学生 ID、学生の年齢、学生の名前) がすべての行で繰り返されることです。どうすれば修正できますか?

4

1 に答える 1

3

レイアウトを 2 つに分割します。最初のレイアウトには列ヘッダーが含まれます。これをheader.xmlとしましょう:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linear1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:paddingBottom="6dip"
    android:paddingTop="4dip" >

    <TextView
        android:layout_width="90dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="student ID" />

    <TextView
        android:layout_width="90dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="student Age" />

    <TextView
        android:layout_width="90dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="student Name" />
</LinearLayout>

2 つ目は単純に各行用で、row.xmlと呼ばれます。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linear1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:paddingBottom="6dip"
    android:paddingTop="4dip" >

    <TextView
        android:id="@+id/studentID"
        android:layout_width="90dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
         />

    <TextView
        android:id="@+id/studentAge"
        android:layout_width="90dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
       />

    <TextView
        android:id="@+id/studentName"
        android:layout_width="90dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
         />
</LinearLayout>

(後でより良い名前を付けることができます。)

これで、 onCreate() は次のようになります。

// Set up your header
lv.addHeaderView(getLayoutInflater().inflate(R.layout.header, null, false));

// Change the resource id to R.layout.row
sd = new SimpleAdapter(this, aList, R.layout.row, new String[]{"Date","Month","Time"}, new int[]{R.id.studentID,R.id.studentAge,R.id.studentName});
lv.setAdapter(sd);
于 2012-07-22T17:28:36.137 に答える