2

ゴール

scrollViewに(ListViewではなく)リストが必要です

問題

ScrollViewのListViewが機能しない

考えられる解決策

解決策は次のことを行うことだと思います。

  1. AdapterViewを拡張するクラスを作成します
  2. XMLレイアウトでクラスを設定します
  3. adapterViewにアダプターを入力します。

ソリューションの問題

拡張AdapterViewをxmlレイアウトに配置すると、アプリがクラッシュします。

エラー:10-04 16:02:14.396:W / ActivityManager(2119):ActivityRecord{422c1838パッケージ/.activities.SelectWorkplaceActivity}のアクティビティ一時停止タイムアウト

質問

ここで何が問題になっていますか?

アダプターを使用してスクロール不可能なリストを作成するためのより良い方法はありますか?

コード

景色:

public class BasicListView extends AdapterView<ListAdapter> {

private String tag = "BasicListView";

private ListAdapter mAdapter;

private DataSetObserver mDataSetObserver;

private Context mContext;

public BasicListView(Context context) {
    super(context);
    mContext = context;

}

public BasicListView(Context context, AttributeSet attrs) {
    super(context, attrs);
    mContext = context;
}

public BasicListView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    mContext = context;
}

@Override
public ListAdapter getAdapter() {
    return mAdapter;
}
@Override
public View getSelectedView() {
    Log.i(tag, "getSelectedView not available");
    return null;
}
@Override
public void setAdapter(ListAdapter adapter) {
    if(mAdapter != null)
    {
        mAdapter.unregisterDataSetObserver(mDataSetObserver);
    }

    mAdapter = adapter; 

    requestLayout();
}

@Override
public void setSelection(int position) {
    Log.i(tag, "setSelection not available");
}
}

そしてXMLレイアウト:

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

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="2"
     >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/TextView02"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Code scannen" />

        <Button
            android:id="@+id/btn_scan_code"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:text="Scan werkplek" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Code handmatig invoeren" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >


            <EditText
                android:id="@+id/et_type_code"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10" >
            </EditText>

            <Button
                android:id="@+id/btn_send_code"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Verzenden" />
        </LinearLayout>

        <TextView
            android:id="@+id/TextView01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/label_current_sessions"
            />

        <package.views.BasicListView
            android:id="@+id/current_sessions"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
        </package.views.BasicListView>

        <TextView
            android:id="@+id/TextView02"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dip"
            android:text="@string/label_favorite_workplaces"
            />

        <ListView
            android:id="@+id/favorite_workplaces"
            android:layout_width="match_parent"
            android:layout_height="193dp"
            />

    </LinearLayout>
</ScrollView>


<include
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    layout="@layout/actionbar" />

さらに詳しい情報が必要な場合は、お問い合わせください:)

4

1 に答える 1

3

Romain Guyからのこの回答は、この目的のためにListViewではなくLinearLayoutを使用する必要がある理由を説明しています:https ://stackoverflow.com/a/3496042/1717225

于 2012-10-04T14:35:09.940 に答える