2011-10-25 3 views
0

내 listview에 여러 레이아웃을 표시하려고합니다. 목록보기에서 세 항목 만 있고 각 행마다 다른 레이아웃이 있습니다. 다음은 오류를ListView에 여러 레이아웃로드 중

10-25 14:00:14.298: ERROR/AndroidRuntime(3102): java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams 
10-25 14:00:14.298: ERROR/AndroidRuntime(3102):  at android.widget.ListView.measureScrapChild(ListView.java:1117) 
10-25 14:00:14.298: ERROR/AndroidRuntime(3102):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1200) 
10-25 14:00:14.298: ERROR/AndroidRuntime(3102):  at android.widget.ListView.onMeasure(ListView.java:1109) 
10-25 14:00:14.298: ERROR/AndroidRuntime(3102):  at android.view.View.measure(View.java:8172) 

수있는 사람의 도움을 바랍니다의 충돌을 실행하고 제공하면서 나는 그

private class CompetitionDetailsAdapter extends ArrayAdapter<Article> { 


public CompetitionDetailsAdapter(Context context, int textViewResourceId 
       ) { 
      super(context, 0); 
      // TODO Auto-generated constructor stub 
     } 

     @Override 
     public int getCount() { 
      return 3; 
     } 

     @Override 
     public int getItemViewType(int position) { 
      return position; 
     } 

     @Override 
     public int getViewTypeCount() { 
      return 3; 
     } 



     @Override 
     public View getView(int position, View convertView, ViewGroup parent) 
     { 
      // TODO Auto-generated method stub 
      //return super.getView(position, convertView, parent); 
      LayoutInflater inflater=getLayoutInflater(); 
      int type = getItemViewType(position); 
      switch(type) 
      { 
       case 0: 
       { 
        View headerCell = inflater.inflate(R.layout.rsscellheader, null); 
        ImageView imageView = (ImageView)headerCell.findViewById(R.id.headerCellImage); 
        TextView title = (TextView)headerCell.findViewById(R.id.txt_HeaderCellTitle); 
        TextView date = (TextView)headerCell.findViewById(R.id.txt_HeaderCellDate); 
        Activity activity = (Activity) getContext(); 
        imageLoader.DisplayImage(appDeleg.getSelectedCompetition().getImage(), activity, imageView); 
        return headerCell; 
        //break; 
       } 
       case 1: 
       { 
        View webViewCell = inflater.inflate(R.layout.rsswebviewcell, null); 
        WebView webView = (WebView)webViewCell.findViewById(R.id.webView); 
        webView.loadData(appDeleg.getSelectedCompetition().getDescription(), "text/html", "utf-8"); 
        return webViewCell; 
       } 
       case 2: 
       { 
        View buttonCell = inflater.inflate(R.layout.rssbuttoncell, null); 
        ImageButton btnWebView = (ImageButton)buttonCell.findViewById(R.id.btn_WebView); 
        return btnWebView; 
       } 
      } 
      return convertView; 
     } 
    } 

에 사용하지만하고있는 코드는? 어떻게하면 안드로이드에서 이것을 할 수 있습니까? 감사

나는 당신의 잘못이 함께 시도 ... 당신이 목록에서 3 항목 이상을 넣어 위해 노력하고 있으며, 목록이 큰 경우 그것은 당신에게 실수를 보여주는 것보다 있다는이라고 생각
+0

당신이 getCount에서 3을 반환하는 이유는()이다? 그리고 당신은 당신의 디자인 플라이를 공유 할 수 있습니까? 나는 당신이리스트 뷰를 구현할 필요가 없다고 생각합니다. –

답변

0

:

private class CompetitionDetailsAdapter extends ArrayAdapter<Article> { 
int i =0; 

public CompetitionDetailsAdapter(Context context, int textViewResourceId 
       ) { 
      super(context, 0); 
      // TODO Auto-generated constructor stub 
     } 

     @Override 
     public int getCount() { 
      return 3; 
     } 

     @Override 
     public int getItemViewType(int position) { 
      return position; 
     } 

     @Override 
     public int getViewTypeCount() { 
      return 3; 
     } 



     @Override 
     public View getView(int position, View convertView, ViewGroup parent) 
     { 
      // TODO Auto-generated method stub 
      //return super.getView(position, convertView, parent); 
      LayoutInflater inflater=getLayoutInflater(); 

      switch(i) 
      { 
       case 0: 
       { 
        View headerCell = inflater.inflate(R.layout.rsscellheader, null); 
        ImageView imageView = (ImageView)headerCell.findViewById(R.id.headerCellImage); 
        TextView title = (TextView)headerCell.findViewById(R.id.txt_HeaderCellTitle); 
        TextView date = (TextView)headerCell.findViewById(R.id.txt_HeaderCellDate); 
        Activity activity = (Activity) getContext(); 
        imageLoader.DisplayImage(appDeleg.getSelectedCompetition().getImage(), activity, imageView); 
        return headerCell; 
        i++; 
        //break; 
       } 
       case 1: 
       { 
        View webViewCell = inflater.inflate(R.layout.rsswebviewcell, null); 
        WebView webView = (WebView)webViewCell.findViewById(R.id.webView); 
        webView.loadData(appDeleg.getSelectedCompetition().getDescription(), "text/html", "utf-8"); 
        i++; 
        return webViewCell; 
       } 
       case 2: 
       { 
        View buttonCell = inflater.inflate(R.layout.rssbuttoncell, null); 
        ImageButton btnWebView = (ImageButton)buttonCell.findViewById(R.id.btn_WebView); 
        i = 0; 
        return btnWebView; 
       } 
      } 
      return convertView; 
     } 
    } 
1

문제점을 발견했습니다. 내가 여기하여 ImageButton 를 반환 한 경우 2. 대신의 관점에서 반환 형식과 그 오류는 올바른 코드

case 2: 
{  
    View buttonCell = inflater.inflate(R.layout.rssbuttoncell, null); 
    ImageButton btnWebView = (ImageButton)buttonCell.findViewById(R.id.btn_WebView); 

    return buttonCell; 
}