2014-04-30 8 views
0

누군가가 도움을 줄 수 있으리라고 생각합니다. 내 생각이 부풀어 오르는 문제가있어. 내 목표는 사용자 정의 배열 어댑터를 사용하여 사용자 정의 레이아웃에 항목 목록을 표시하는 것입니다. 다른 원래 게시물을 사용하여 원래 코드 중 일부를 다시 만들었지 만 간단한 어댑터가 제대로 작동하면 새 목록이 표시되지 않습니다. 아래 참조하십시오 :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; 
    } 

} 

^내가 처음에 가지고 있던 비동기 이 클래스의 retr의 태스크 각 항목에 대한 이미지를 ieve,하지만 지금은 그 모두를 제거했습니다.

LogCat에서 실제 오류가 발생하지 않습니다. 오류가 발생하지 않으며 View가 부 풀리지 않습니다. 어떤 도움을 주셔서 감사합니다.

+0

디버깅을 시도하고'getView '가 호출되는지 확인하십시오. – Libin

답변

0

글쎄, 당황 스럽네. 나는 그 문제를 발견했다. 나는 또 다른 버그를 해결하기 위해 임시로 주석했던

//this.eventList = eventList; 

: 분명히, 나는 이벤트 목록을 초기화 어댑터 생성자에서 행의 주석을 해제하는 것을 잊었다. 지금은 잘 작동하지만 제안 해 주셔서 감사합니다.

관련 문제