2016-05-17 7 views
1

ArrayList<String>のすべての商品を表示するListViewにします。私はArrayAdapter<String>を使っています。問題は、ArrayListの最初の項目(私の例では 'foo')のみが表示されることです。誰かが私に理由を教えてくれますか?何か不足していますか?リストビューは最初の項目のみを表示します

は、私は2

のAndroid Studioから生成されたコード(タブアクションバースピナー活動)を使用して、最小限の例を作ったマイFooActivity

public class FooActivity extends AppCompatActivity { 
... 

public static class PlaceholderFragment extends Fragment { 

    private ListView fooListView; 
    private ArrayAdapter<String> mAdapter; 
    ... 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_foo, container, false); 

     fooListView = (ListView) rootView.findViewById(R.id.foo_list); 
     updateList(); 
     return rootView; 
    } 

    private void updateList() { 
      ArrayList<String> strings = new ArrayList<>(); 
      strings.add("foo"); 
      strings.add("bar"); 

      if (mAdapter == null) { 
       mAdapter = new ArrayAdapter<>(getContext(), 
         R.layout.item_foo, 
         R.id.foo_string, 
         strings); 
       fooListView.setAdapter(mAdapter); 
      } else { 
       mAdapter.clear(); 
       mAdapter.addAll(strings); 
       mAdapter.notifyDataSetChanged(); 
      } 
    } 
} 

マイfragment_foo.xml

<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="com.foo.activities.FooActivity$PlaceholderFragment"> 

    <ListView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/foo_list" 
     android:layout_below="@+id/total_activities" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="10dp" 
     android:layout_alignParentBottom="true" /> 
</RelativeLayout> 

およびitem_foo.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <TextView 
     android:id="@+id/foo_string" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="some_string" 
     android:textSize="20sp" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 
</LinearLayout> 

activity_foo.xml(私はそこに変更を加えませんでした)とFooActivityクラスも投稿できます。

答えて

5

問題は実際にを持っていた私のactivity_foo.xmlでした。私はandroid:fillViewport="true"を追加し、すべてのアイテムを表示するようになりました。

は私のNestedScrollViewは次のようになります。

<android.support.v4.widget.NestedScrollView 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    android:fillViewport="true"/> 
3

ListViewで、を使用すると、1つのアイテムしか表示されません。試してみてくださいandroid:layout_height="match_parent"ListViewがレイアウトの一部しか占めない場合は、重み付きのLinearLayoutまたは制約付きのRelativeLayoutが必要です。しかしwrap_contentは今までListViewの高さでは動作しません。

0

私はあなたのリストビューから削除されているこの

<ListView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/foo_list" 
    android:layout_marginTop="10dp"/> 

のようなあなたのリストビューを見て何かandroid:layout_below="@+id/total_activities"

android:layout_alignParentBottom="true" 
関連する問題