2013-07-08 18 views
8

Vì vậy, tôi nhận được lỗi này khi thực hiện một bộ điều hợp trong 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 


    } 

Đây là FinderAdapterclass của tôi:

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

tôi đã sử dụng LinearLayout thuộc danh mục

Tôi đã đọc một số vấn đề tương tự về lỗi này, nhưng vẫn chưa hiểu đầy đủ về khái niệm này. Vì vậy, bất kỳ trợ giúp sẽ được đánh giá cao. nhờ

chỉnh sửa: xin lỗi quê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

đăng stacktrace của bạn ... – Tarun

+0

kiểm tra các lớp đã nhập – OMAK

+2

BTW: với tôi, 'getView()' của bạn không có ý nghĩa gì cả. –

Trả lời

22

Sử dụng android.widget.AbsListView.LayoutParams thay vì android.widget.LinearLayout.LayoutParams nhập khẩu của bạn.

Một ngăn xếp ClassCastException khá mô tả ...

+0

được giải quyết. có vẻ như tôi đã đặt sai mã số. cảm ơn vì đã trả lời dou –

+0

bạn có thể trợ giúp http://stackoverflow.com/questions/30951608/java-lang-classcastexception-android-view-viewgrouplayoutparams-cannot-be-cast – Aditya

1

Đối với những người còn lại có cùng vấn đề. Trước tiên, hãy sửa phương thức getView của bạn.

Cố gắng làm cho nó như thế này.

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

Điều này có thể giải quyết lỗi android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams.

Tin tôi đi, tôi chỉ gặp vấn đề chính xác này, nhưng tôi đã giải quyết nó theo cách này.

Các vấn đề liên quan