2012-03-06 26 views
4

私は両方のリストビューにデータが含まれているので、リストビューを2つ追加していますが、リストビュー(S)をスクロールビューに追加すると、 、各リストビューの1つの項目のみを表示します。ここでスクロールビューに2つのリストビューを追加するには

は、画像はXMLコードは、

enter image description here

です:

<ScrollView 
     android:id="@+id/scrollView" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_above="@+id/layoutFooter7" 
     android:layout_below="@+id/linArrange" > 

     <RelativeLayout 
      android:id="@+id/linListViews" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"> 

      <ListView 
       android:id="@+id/lstviewUnBlockVenues" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:cacheColorHint="#00000000" 
       android:divider="#00000000" 
       android:dividerHeight="0dp" 
       android:fadeScrollbars="false" > 

      </ListView> 

      <LinearLayout 
       android:id="@+id/linearLayout1" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/lstviewUnBlockVenues" 
       android:background="#ABCDEF" 
       android:orientation="vertical" > 

       <TextView 
        android:id="@+id/textView2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Blocked Venues" 
        android:textAppearance="?android:attr/textAppearanceLarge" 
        android:textColor="#061218" /> 
      </LinearLayout> 



      <ListView 
       android:id="@+id/lstviewBlockedVenues" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/linearLayout1" 
       android:cacheColorHint="#00000000" 
       android:divider="#00000000" 
       android:dividerHeight="0dp" 
       android:fadeScrollbars="false" > 

      </ListView> 
     </RelativeLayout> 
    </ScrollView> 

私が欲しいのは、リストビューは、複数の項目が含まれている場合でのスクロールビューは、スクロールダウンしなければならないということですこの瞬間両方のリストビューには1つのアイテムしか表示されません:(

+0

を使用することですか? – noob

答えて

1

LinearLayoutおよび重量。あなたの問題は、wrap_contentはListViewsが画面の50%を占めないようにすることです。このような

何か:

<LinearLayout 
     android:id="@+id/linListViews" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:weightSum="2" 
     > 

     <ListView 
      android:id="@+id/lstviewUnBlockVenues" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight: 1; 
      android:cacheColorHint="#00000000" 
      android:divider="#00000000" 
      android:dividerHeight="0dp" 
      android:fadeScrollbars="false" > 

     </ListView> 


     <ListView 
      android:id="@+id/lstviewBlockedVenues" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:cacheColorHint="#00000000" 
      android:divider="#00000000" 
      android:dividerHeight="0dp" 
      android:fadeScrollbars="false" > 

     </ListView> 
    </LinearLayout> 
1

それはあなたがあなたのUIを変更するのが最善です。

Androidで別のスクロールウィジェットを配置すると、実際には多くの問題が発生します。回避策がありますが、それはユーザーの苦痛をスクロールさせます。

詳細については、私はscrollviewで3リストビューで「arnp」の答えと作られたとの例を使用google search

5

上に表示された結果のいずれかをクリックすることができます。それはうまく動作します。

レイアウト:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

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

      <ListView 
       android:id="@+id/list1" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" /> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="5dp" 
       android:background="#ff0000" /> 

      <ListView 
       android:id="@+id/list2" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" /> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="5dp" 
       android:background="#ff0000" /> 

      <ListView 
       android:id="@+id/list3" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" /> 

      <View 
       android:layout_width="fill_parent" 
       android:layout_height="5dp" 
       android:background="#ff0000" /> 
     </LinearLayout> 
    </ScrollView> 

</RelativeLayout> 

活動:

package com.example.listviewtest; 

import java.util.ArrayList; 
import java.util.List; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.ViewGroup.LayoutParams; 
import android.widget.ArrayAdapter; 
import android.widget.BaseAdapter; 
import android.widget.ListAdapter; 
import android.widget.ListView; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     ListView list1 = (ListView) findViewById(R.id.list1); 
     ListView list2 = (ListView) findViewById(R.id.list2); 
     ListView list3 = (ListView) findViewById(R.id.list3); 


     String[] items1 = { "Alfa1", "Alfa2", "Alfa3", "Alfa4", "Alfa5", "Alfa6", "Alfa7", "Alfa8", "Alfa9", "Alfa10", "Alfa11", "Alfa12", "Alfa13", "Alfa14", "Alfa15", "Alfa16", "Alfa17" }; 
     String[] items2 = { "Beta1", "Beta2", "Beta3", "Beta4", "Beta5", "Beta6", "Beta7", "Beta8", "Beta9", "Beta10", "Beta11", "Beta12", "Beta13", "Beta14", "Beta15", "Beta16", "Beta17" }; 
     String[] items3 = { "Teta1", "Teta2", "Teta3", "Teta4", "Teta5", "Teta6", "Teta7", "Teta8", "Teta9", "Teta10", "Teta11", "Teta12", "Teta13", "Teta14", "Teta15", "Teta16", "Teta17" }; 

     ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, items1); 
     list1.setAdapter(adapter1); 
     ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, items2); 
     list2.setAdapter(adapter2); 
     ArrayAdapter<String> adapter3 = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, items3); 
     list3.setAdapter(adapter3); 

     setListViewHeightBasedOnChildren(list1); 
     setListViewHeightBasedOnChildren(list2); 
     setListViewHeightBasedOnChildren(list3); 

    } 

    public void setListViewHeightBasedOnChildren(ListView listView) { 
     ArrayAdapter listAdapter = (ArrayAdapter) listView.getAdapter(); 
      if (listAdapter == null) { 
       // pre-condition 
       return; 
      } 

      int totalHeight = 0; 
      for (int i = 0; i < listAdapter.getCount(); i++) { 
       View listItem = listAdapter.getView(i, null, listView); 
       listItem.measure(0, 0); 
       totalHeight += listItem.getMeasuredHeight(); 
      } 

      ViewGroup.LayoutParams params = listView.getLayoutParams(); 
      params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); 
      listView.setLayoutParams(params); 
      listView.requestLayout(); 
     } 


} 
+0

は素晴らしい作品です!ありがとう! –

+1

追加することもできます:ListAdapter listAdapter = listView.getAdapter(); アダプタを汎用的にするためにListViewHeightBasedOnChildrenを設定する –

0

あなたが最良の方法のチュートリアルを見つけることができますが、リストビューは、どこに問題があります、正しいデータを示しているExpandableListView here

関連する問題