2014-04-30 35 views
0

希望有人能幫忙。我有一個問題似乎誇大了我的觀點。我的目標是使用自定義數組適配器顯示自定義佈局中的項目列表。我使用另一個SO帖子重新編寫了一些原始代碼,但在我的簡單適配器正常工作的情況下,新列表不顯示。請看下面:ListFragment似乎不是在充氣

這是我的片段類。

HomeFeedFragment.java 

    public class HomeFeedFragment extends ListFragment { 

    private ListView listView; 
    private ArrayList<MainEvent> items; 
    private MainEventListViewAdapter adapter; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_homefeed, 
       container, false); 
     listView = (ListView) rootView.findViewById(android.R.id.list); 

     return rootView; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     //GetEvents is just a test method to return a list of pre-filled event objects 
     items = GlobalList.GetEvents(); 
     adapter = new MainEventListViewAdapter(getActivity(), android.R.id.list, items); 
     listView.setAdapter(adapter); 
    } 


     @Override 
     public void onListItemClick(ListView l, View v, int position, long id) { 
     // do something with the data 
     } 

} 

我的自定義行佈局XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:padding="5dip" > 

    <!-- ListRow Left sied Thumbnail image --> 

    <LinearLayout 
     android:id="@+id/thumbnail" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_marginRight="5dip" 
     android:padding="3dip" > 

     <ImageView 
      android:id="@+id/list_image" 
      android:layout_width="50dip" 
      android:layout_height="50dip" /> 
    </LinearLayout> 

    <!-- Heading Text --> 

    <TextView 
     android:id="@+id/eventheader" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/thumbnail" 
     android:layout_toRightOf="@+id/thumbnail" 
     android:textColor="#040404" 
     android:textSize="15sp" 
     android:textStyle="bold" 
     android:typeface="sans" /> 

    <!-- Event Description --> 

    <TextView 
     android:id="@+id/eventdescription" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/thumbnail" 
     android:layout_below="@id/eventheader" 
     android:layout_marginTop="1dip" 
     android:layout_toRightOf="@+id/thumbnail" 
     android:textColor="#343434" 
     android:textSize="10sp" 
     tools:ignore="SmallSp" /> 

    <!-- Posted Time --> 

    <TextView 
     android:id="@+id/eventpostedtime" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignTop="@id/eventheader" 
     android:layout_marginRight="5dip" 
     android:gravity="right" 
     android:textColor="#10bcc9" 
     android:textSize="10sp" 
     android:textStyle="bold" 
     tools:ignore="SmallSp" /> 

</RelativeLayout> 

實際片段佈局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" >  

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 
    </ListView> 


</LinearLayout> 

而且我的自定義ArrayAdapter:

public class MainEventListViewAdapter extends ArrayAdapter<MainEvent> { 
    private Context context; 
    private List<MainEvent> eventList; 

    public MainEventListViewAdapter(Context context, int textViewResourceId, List<MainEvent> eventList){ 
     super(context, textViewResourceId, eventList); 
     this.context = context; 
     //this.eventList = eventList; 
    } 

    /*private view holder class*/ 
    private class ViewHolder { 
     ImageView imageView; 
     TextView txtEventHeader; 
     TextView txtEventDescription; 
     TextView txtEventPostedTime; 
    } 

    public int getCount(){ 
     if(eventList!=null){ 
      return eventList.size(); 
     } 
     return 0; 
    } 

    public MainEvent getItem(int position){ 
     if(eventList!=null){ 
      return eventList.get(position); 
     } 
     return null; 
    } 

    public long getItemId(int position){ 
     if(eventList!=null){ 
      return eventList.get(position).hashCode(); 
     } 
     return 0; 
    } 

    public View getView(int position, View convertView, ViewGroup parent){ 
     ViewHolder holder = null; 
     MainEvent rowItem = getItem(position); 

     LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     if(convertView==null){ 
      convertView = inflater.inflate(R.layout.fragment_homefeed_rowlayout, parent, false); 
      holder = new ViewHolder(); 
      holder.txtEventHeader = (TextView) convertView.findViewById(R.id.eventheader); 
      holder.txtEventDescription = (TextView) convertView.findViewById(R.id.eventdescription); 
      holder.txtEventPostedTime = (TextView) convertView.findViewById(R.id.eventpostedtime); 
      convertView.setTag(holder); 
     }else{ 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.txtEventHeader.setText(rowItem.getHeadline()); 
     holder.txtEventDescription.setText(rowItem.getDescription()); 
     holder.txtEventPostedTime.setText(rowItem.getPostedTime()); 

     /*TextView text = (TextView) v.findViewById(R.id.label); 
     text.setText(m.getHeadline()); 
     ImageView imageView = (ImageView) v.findViewById(R.id.icon); 
     imageView.setTag(m.getImageURL()); 
     //DownloadImageTask dt = new DownloadImageTask(); 
     dt.execute(imageView); 

     return v;*/ 
     return convertView; 
    } 

    public List<MainEvent> getEventList(){ 
     return eventList; 
    } 

    public void setEventList(List<MainEvent> eventList){ 
     this.eventList = eventList; 
    } 

} 

^我最初有一個異步本課中的任務可以完成即使每個項目的圖像,但我現在已經刪除了所有這些。

我沒有在LogCat中得到任何實際的錯誤,沒有崩潰或任何事情,視圖只是沒有膨脹。任何幫助表示讚賞。

+0

嘗試調試並檢查getView是否被調用。 – Libin

回答

0

好吧,這很尷尬。我發現了這個問題。很顯然,我忘了取消註釋在初始化事件列表適配器構造線:

//this.eventList = eventList; 

我要評論它暫時解決另一個錯誤。現在工作正常,但感謝您的建議。