2017-09-04 21 views
1

私は自分のフラグメントにListViewを作成し、結果を単純な文字列リストから取得します。ListView does not load items

Item.java

public class Item implements Parcelable { 

    public String message; 

    public Item(String message) { 
     this.message = message; 
    } 


    protected Item(Parcel in) { 
     message = in.readString(); 
    } 

    public static final Creator<Item> CREATOR = new Creator<Item>() { 
     @Override 
     public Item createFromParcel(Parcel in) { 
      return new Item(in); 
     } 

     @Override 
     public Item[] newArray(int size) { 
      return new Item[size]; 
     } 
    }; 

    @Override 
    public int describeContents() { 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     dest.writeString(message); 
    } 
} 

item_layout.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:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/item_text" 
      android:textSize="12sp"/> 

</LinearLayout> 

ListAdapter.java

public class ItemListAdapter extends ArrayAdapter<Item> { 

    public ItemListAdapter(Context context, ArrayList<Item> items) { 
     super(context, 0, items); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // Get the data item for this position 
     Item item = getItem(position); 

     if (convertView == null) { 
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_layout, parent, false); 
     } 

     TextView messageText = (TextView) convertView.findViewById(R.id.item_text); 

     messageText.setText(item.message); 

     return convertView; 
    } 
} 

BeveragesItemListFragment.java

アプリケーションがクラッシュしない - フラグメントのタイトルがロードされ、すべてがログに綺麗に見えます。しかし、私はListViewで、事前定義された文字列が表示されません。問題は、私がItemListAdapter初期化で渡した文脈にあるのでしょうか?

私はadapter.notifyDataSetChanged()を入力しようとしましたが、それでも役に立たなかったです。

答えて

2

あなたがreturn文の上に以下の行を配置する必要があり

0

アダプタをListViewListView.setAdapterで設定してください。アダプタ自体は何も表示されません。

0

ItemListAdapter adapter = new ItemListAdapter(getActivity().getApplicationContext(), array_of_items); 
    setListAdapter(adapter); 
// ^^^^^^^^^^^^^^^^ 
    return v; 

return v;setListAdapter(adapter);を呼び出し、他のリスト項目のためのスペースを作るために android:layout_height="wrap_content"android:layout_height="match_parent"を変更する必要があります。

for (String bev: bevs) { 
      Item newItem = new Item(bev); 
      array_of_items.add(newItem); 
     } 

ItemListAdapter adapter = new ItemListAdapter(getActivity(), array_of_items); 


    setListAdapter(adapter);