2013-07-08 16 views
8

Bu hatayı FinderActivity.class içinde bir bağdaştırıcı çalıştırırken anladım. Bu hata hakkında birkaç benzer sorunlar okudum ama henüz tam kavramını anlamak için

public class FinderListAdapter extends BaseAdapter 
{ 
    Context context; 
    LayoutInflater inflater; 
    private int[]icons = 
    { 
     R.drawable.icon_service_center, 
     R.drawable.icon_car_showroom, 
     R.drawable.icon_radar, 
     R.drawable.icon_office 
    }; 
    private List<String>options = null; 

    public FinderListAdapter(Context paramContext, List<String>paramList) 
    { 
     this.context = paramContext; 
     this.options = paramList; 
     this.inflater = LayoutInflater.from(paramContext); 
    } 

    @Override 
    public int getCount() 
    { 
     return this.options.size(); 
    } 

    @Override 
    public Object getItem(int paramInt) 
    { 
     return this.options.get(paramInt); 
    } 

    @Override 
    public long getItemId(int paramInt) 
    { 
     return paramInt; 
    } 


    @Override 
    public View getView(int paramInt, View paramView, ViewGroup paramViewGroup) 
    { 
     String str = (String)this.options.get(paramInt); 

     if(paramView == null) 
     { 

     } 
     else 
     { 

      return paramView; 
     } 
     return paramViewGroup; 
    } 
    public boolean isEmpty() 
    { 
     return (this.options == null)||(this.options.size()==0); 
    } 

    private static class ViewHolder 
    { 
     ImageView finderIcon; 
     TextView finderText; 
    } 
} 

Ben öğesi ise listede LinearLayout kullandı:

public class FinderActivity extends ListActivity 
{ 
    private List<String> itemsearchoptions = Arrays.asList(
      new String[] 
        { 
         "Search Service Center","Search Showroom", 
         "Area Surveillance", "Nearest OAC Offices" 
        }); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.finder); 


     getListView().setAdapter(new FinderListAdapter(this, this.itemsearchoptions));//cause of error 


    } 

İşte Benim FinderAdapterclass olduğunu. Yani herhangi bir yardım takdir edilecektir. teşekkürler

Düzenlenen

: üzgün stacktrace

07-08 15:31:42.380: E/AndroidRuntime(4550): FATAL EXCEPTION: main 
07-08 15:31:42.380: E/AndroidRuntime(4550): java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams 
07-08 15:31:42.380: E/AndroidRuntime(4550):  at android.widget.ListView.measureScrapChild(ListView.java:1166) 
07-08 15:31:42.380: E/AndroidRuntime(4550):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1248) 
07-08 15:31:42.380: E/AndroidRuntime(4550):  at android.widget.ListView.onMeasure(ListView.java:1158) 
07-08 15:31:42.380: E/AndroidRuntime(4550):  at android.view.View.measure(View.java:15525) 
07-08 15:31:42.380: E/AndroidRuntime(4550):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825) 
07-08 15:31:42.380: E/AndroidRuntime(4550):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404) 
07-08 15:31:42.380: E/AndroidRuntime(4550):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:695) 
07-08 15:31:42.380: E/AndroidRuntime(4550):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
07-08 15:31:42.380: E/AndroidRuntime(4550):  at android.view.View.measure(View.java:15525) 
07-08 15:31:42.380: E/AndroidRuntime(4550):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825) 
07-08 15:31:42.380: E/AndroidRuntime(4550):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
07-08 15:31:42.380: E/AndroidRuntime(4550):  at android.view.View.measure(View.java:15525) 
07-08 15:31:42.380: E/AndroidRuntime(4550):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825) 
+0

stacktrace dosyanızı da gönderin ... – Tarun

+0

İçe aktarılan sınıflarınızı kontrol edin – OMAK

+2

BTW: bana göre getView() 'hiçbir anlam ifade etmiyor. –

cevap

22

Kullanım android.widget.AbsListView.LayoutParams yerine sizin ithalatta android.widget.LinearLayout.LayoutParams unuttum.

A ClassCastException StackTrace ... oldukça açıklayıcı aynı sorun var sizin geri kalanı için

+0

çözüldü. Bazı kodları yanlış yerleştirmişim gibi görünüyor. –

+0

numaralı telefonu yanıtladığınız için teşekkürler http://stackoverflow.com/questions/30951608/java-lang-classcastexception-android-view-viewgrouplayoutparams-cannot-be-cast – Aditya

1

. Lütfen önce, getView yönteminizi düzeltin.

Bunu böyle yapmaya çalışın.

public View getView(int i, View view, ViewGroup viewGroup) { 
    LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View root; 

    if(view == null){ 
     root = layoutInflater.inflate(R.layout.yourLayout, null); 
    } else { 
     root = view; 
    } 

    return root; 
    } 

Bu, android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams hatasını çözebilir.

Güven bana, sadece bu kesin sorunla karşı karşıyayım, ama bunu bu şekilde çözmeyi başarabiliyorum.

İlgili konular