0

ListViewウィジェットがあります。ウィジェットを常に の一番上にListView置き、アイテムと一緒にスクロールできるようにする必要がありますが、アダプターにアイテムがない場合でも表示されるはずです。これはスクロールしない方法です:

ここに画像の説明を入力

ここに画像の説明を入力

レイアウト ファイル:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="vertical">
    <Button
            android:id="@+id/btn_togle_empty"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="toggle empty"
            />


    <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
        <ListView
                android:id="@+id/list_test"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"


                />
        <ViewStub
                android:id="@+id/empty_layout"
                android:layout="@layout/empty"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"/>
    </FrameLayout>

</LinearLayout>

アクティビティのコード:

public class MyActivity extends Activity {
    private MyAdapter adapter;
    private ListView v;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
         v = (ListView) findViewById(R.id.list_test);
        View empty = findViewById(R.id.empty_layout);
        v.setEmptyView(empty);
        final MyAdapter adapter = new MyAdapter();
        v.setAdapter(adapter);
        Button btn = (Button) findViewById(R.id.btn_togle_empty);
        btn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                adapter.togleEmpty();
            }
        });
    }

    private  class MyAdapter extends BaseAdapter {
       boolean empty = false;
        @Override
        public int getCount() {
            return empty ? 0 : 50;
        }

        @Override
        public Object getItem(int i) {
            return new Object();
        }

        @Override
        public long getItemId(int i) {
            return i;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            TextView v =  new TextView(MyActivity.this);
            v.setText("STRING");
            return v;
        }


        public void togleEmpty() {
            empty = !empty;
            notifyDataSetChanged();
        }
    }
}

ウィジェットをヘッダーとして追加するというもう1つのアイデアがありましたが、ListViewが空になると消えます。望む結果を得るにはどうすればよいですか?

4

1 に答える 1

1
        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            if (i == 0) { return custom_widget_view; }
        }
于 2012-07-08T08:46:24.120 に答える