0

私のアプリはリストにデータを表示する必要があります。チュートリアルをいくつか見て、header.xml と row.xml を使用する方法を見つけました。正常に動作しますが、header.xml にさらに何かを追加したいのですが、header.xml 全体が row.xml と一緒にスクロールしていることがわかりました。コードスタイルを完全に書き直して変更する必要のない解決策はありますか?

アクティビティ:

public class HistoryActivity は ListActivity を拡張します {

private static final String TAG = "HistoryActivity";
ListView lv;
SimpleAdapter sd;

RecordDAO dao = new RecordDAO(HistoryActivity.this);

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    lv = getListView();
    lv.addHeaderView(getLayoutInflater().inflate(
            R.layout.header, null, false));


}

@Override
protected void onResume()
{
    super.onResume();
    ArrayList<Record> Records = new ArrayList<Record>();
    Records = (ArrayList<Record>) dao.findAll();


    ArrayList<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>();
    HashMap<String, String> map;

    for (int x = Records.size()-1; x >=0; x--)
    {
        map = new HashMap<String, String>();
        map.put(....// all my data 

        aList.add(map);
    }

    sd = new SimpleAdapter(this, aList, R.layout.row,
            new String[]
            { "date", "name", "time",
                    "rating" }, new int[]              
            { R.id.date, R.id.name, R.id.time,
                     R.id.rating});


    lv.setAdapter(sd);

    lv.setOnItemClickListener(new OnItemClickListener()
    {

        public void onItemClick(AdapterView<?> arg0, View view, int arg2,
                long arg3)
        {
            TextView tx = (TextView) view.findViewById(R.id.date);
            String s = tx.getText().toString();
            Intent intent = new Intent(HistoryActivity.this, EditRecordActivity.class);
            intent.putExtra("date", s);
            startActivity(intent);

        }
    });

}

private void insertNewRecord()
{
    dao.add(newRecord);
}

}

header.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:orientation="vertical" >


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        android:orientation="horizontal"
        android:paddingBottom="6dip"
        android:paddingTop="4dip" >

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Date"
            android:textColor="#FFFFFF"
            android:textSize="16dp" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="name"
            android:textColor="#FFFFFF"
            android:textSize="16dp" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Time"
            android:textColor="#FFFFFF"
            android:textSize="16dp" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Rating"
            android:textColor="#FFFFFF"
            android:textSize="16dp" />
    </LinearLayout>

</LinearLayout>

行.xml:

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

    <TextView
        android:id="@+id/date"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textColor="#FFFFFF" />

    <TextView
        android:id="@+id/name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_weight="1"
        android:textColor="#FFFFFF" />

    <TextView
        android:id="@+id/time"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textColor="#FFFFFF" />

    <TextView
        android:id="@+id/Rating"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textColor="#FFFFFF" />

</LinearLayout>
4

3 に答える 3

0

ListView のヘッダーを設定すると、それがリストの最初の項目になりますが、リスト自体と一緒にスクロールされます。

あなたの場合、ある種のレイアウト(header.xmlに似ています)を作成し、ListViewの上に配置できます。

  1. の代わりにListActivity、から拡張しますActivity
  2. いくつかのビューと ListView を定義する main_layout.xml を作成します。

main_layout

<include header.xml/>
<listview>
于 2012-07-25T14:19:11.117 に答える
0

ListActivity を使用しないでください。悪い習慣だと思います。通常のアクティビティを使用します。ID "@android:id/list" を持つ ListView を header.xml に挿入するだけです。

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:orientation="horizontal"
    android:paddingBottom="6dip"
    android:paddingTop="4dip" >

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Date"
        android:textColor="#FFFFFF"
        android:textSize="16dp" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="name"
        android:textColor="#FFFFFF"
        android:textSize="16dp" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Time"
        android:textColor="#FFFFFF"
        android:textSize="16dp" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Rating"
        android:textColor="#FFFFFF"
        android:textSize="16dp" />
</LinearLayout>

<ListView
    android:id="@android:id/list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
</ListView>

次のようにして、リスト参照を取得できます。 ListView lv = (ListView)findViewById(R.id.list);

于 2012-07-25T14:10:28.920 に答える
0

ヘッダー ビューとフッター ビューを と一緒にスクロールしたくない場合は、メソッドを呼び出す前にとListViewを必ず使用してください。メソッドをあなたのメソッドに移動することをお勧めします。addHeaderView()addFooterView()setAdapter()setAdapter()onCreate()

于 2012-07-25T14:22:41.863 に答える