2013-07-08 12 views
8

Quindi ottengo questo errore quando eseguo un adattatore in FinderActivity.class.

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 


    } 

Ecco mia FinderAdapterclass:

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; 
    } 
} 

ho usato LinearLayout sulla lista oggetto

Ho letto diversi problemi simili su questo errore, ma ancora capire pienamente il concetto. Quindi ogni aiuto sarà apprezzato. grazie

modificato: scusate dimenticato lo 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

invia il tuo stacktrace anche ... – Tarun

+0

controlla le classi importate – OMAK

+2

BTW: per me il tuo 'getView()' non ha senso. –

risposta

22

Uso android.widget.AbsListView.LayoutParams al posto del android.widget.LinearLayout.LayoutParams nelle importazioni.

Un ClassCastException stacktrace è abbastanza descrittiva ...

+0

risolto. sembra che ho sbagliato alcuni codici. grazie per aver risposto dou –

+0

puoi aiutare http://stackoverflow.com/questions/30951608/java-lang-classcastexception-android-view-viewgrouplayoutparams-cannot-be-cast – Aditya

1

Per il resto di voi, che hanno lo stesso problema. Per prima cosa, correggi il tuo metodo getView.

Prova a farlo in questo modo.

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; 
    } 

Questo può risolvere l'errore android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams.

Fidati di me, ho appena affrontato questo problema esatto, ma riesco a risolverlo in questo modo.

Problemi correlati