多くの行があるにもかかわらず、一度に 1 行しか表示されないリスト ビューに問題があります。リスト ビューはタブ内に含まれているため、問題はリスト ビューではなくタブ内にある可能性があります。最初に、別のレイアウト ファイルでリスト ビューを定義し、それを使用してタブを作成しようとしました。それがうまくいかなかったとき、私はそれをタブ定義で FrameLayout に入れました。同じ結果です。
<?xml version="1.0" encoding="utf-8"?>
<TabHost android:layout_width="fill_parent"
android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost">
<LinearLayout android:id="@+id/LinearLayout01"
android:orientation="vertical" android:layout_height="fill_parent"
android:layout_width="fill_parent">
<TabWidget android:id="@android:id/tabs"
android:layout_height="fill_parent" android:layout_width="wrap_content"></TabWidget>
<FrameLayout android:id="@android:id/tabcontent"
android:layout_height="fill_parent" android:layout_width="fill_parent">
<ListView android:id="@+id/list1" android:layout_width="fill_parent"
android:layout_height="fill_parent">
</ListView></FrameLayout>
</LinearLayout>
</TabHost>
これは、タブを作成して追加するために使用するコードです。
protected void addTab(String tabName, TabHost.TabContentFactory tabFactory){
TabSpec tabSpec = tabHost.newTabSpec(tabName);
tabSpec.setIndicator(tabName);
tabSpec.setContent(tabFactory);
tabHost.addTab(tabSpec);
tabs.add(new TabDetails(tabName,tabFactory));
}
私はそれを次のように呼び出します:
addTab("Medical Center Tests",this);
タブのコンテンツを作成するための次のコードを含めます。
@Override
public View createTabContent(String tag) {
// Get the data returned from the servelet and display it in the ListView
data = getDataArray(this.getIntent().getExtras());
ListView lv = (ListView) contentView.findViewById(R.id.list1);
lv.setAdapter(new MyMedicalCentersTestsScreenAdapter(this,lv,data));
return lv;
}
データはすべてそこにあります。リストビューの高さが1行の高さに等しいだけです。
編集:
getView が要求する位置を確認するために、いくつかのデバッグ コマンドを追加しました。最初の行のみを要求し、スクロールすると一度に 1 つずつ要求します。したがって、それは間違いなく小さなリストビューと見なされ、それに応じてスクロールされます。
編集2:
実験してみることにしました。リスト ビューの単純なリストを返しました。
ListView lv = (ListView) contentView.findViewById(R.id.list1);
// create some dummy strings to add to the list
List<String> list1Strings = new ArrayList<String>();
list1Strings.add("Item 1");
list1Strings.add("Item 2");
list1Strings.add("Item 3");
list1Strings.add("Item 4");
lv.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, list1Strings));
まだ同じ。一度に 1 行のみ。