2012-01-30 1 views
0

GreenDroid의 ItemAdapter 및 사용자 지정 목록 항목을 일반 ListActivity (또는 SherlockListActivity의 Future)와 함께 사용하고 싶습니다. ItemAdapter, Item 및 View 클래스를 추출하고 사용자 정의 프로젝트를 만들었습니다.일반 Activity가있는 GreenDroid ItemAdapter 사용

내 예제 ListActivity : (주. 어제는 전체 GreenDroid 프로젝트를 사용하여 같은 일을 시도 그래서, 거기에 내 새로운 추출 프로젝트에 문제 없음) :

public class TestActivity extends ListActivity { 
    /** Called when the activity is first created. */ 

    ItemAdapter adapter; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     adapter=new ItemAdapter(this); 
     adapter.add(new TextItem("test")); 
     adapter.notifyDataSetChanged(); 
     setListAdapter(adapter); 
    } 
} 

충돌이 출력 제공 :

01-30 17:07:33.983: E/AndroidRuntime(21042): FATAL EXCEPTION: main 
01-30 17:07:33.983: E/AndroidRuntime(21042): android.view.InflateException: Binary XML file line #20: Error inflating class com.itusozluk.itemadapter.widget.itemview.TextItemView 
01-30 17:07:33.983: E/AndroidRuntime(21042): at android.view.LayoutInflater.createView(LayoutInflater.java:606) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680) 
01-30 17:07:33.983: E/AndroidRuntime(21042): at android.view.LayoutInflater.inflate(LayoutInflater.java:466) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at com.itusozluk.itemadapter.widget.item.Item.createCellFromXml(Item.java:125) 
01-30 17:07:33.983: E/AndroidRuntime(21042): at com.itusozluk.itemadapter.widget.item.TextItem.newView(TextItem.java:61) 
01-30 17:07:33.983: E/AndroidRuntime(21042): at com.itusozluk.itemadapter.ItemAdapter.getView(ItemAdapter.java:445) 
01-30 17:07:33.983: E/AndroidRuntime(21042): at android.widget.AbsListView.obtainView(AbsListView.java:2033) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at android.widget.ListView.makeAndAddView(ListView.java:1772) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at android.widget.ListView.fillDown(ListView.java:672) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at android.widget.ListView.fillFromTop(ListView.java:732) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at android.widget.ListView.layoutChildren(ListView.java:1625) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at android.widget.AbsListView.onLayout(AbsListView.java:1863) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at android.view.View.layout(View.java:11278) 01-30 17:07:33.983: 
      E/AndroidRuntime(21042): at android.view.ViewGroup.layout(ViewGroup.java:4224) 01-30 17:07:33.983: 
      E/AndroidRuntime(21042): at android.widget.FrameLayout.onLayout(FrameLayout.java:431) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at android.view.View.layout(View.java:11278) 01-30 17:07:33.983: 
      E/AndroidRuntime(21042): at android.view.ViewGroup.layout(ViewGroup.java:4224) 01-30 17:07:33.983: 
      E/AndroidRuntime(21042): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628) 
01-30 17:07:33.983: E/AndroidRuntime(21042): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486) 
01-30 17:07:33.983: E/AndroidRuntime(21042): at android.widget.LinearLayout.onLayout(LinearLayout.java:1399) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at android.view.View.layout(View.java:11278) 01-30 17:07:33.983: 
      E/AndroidRuntime(21042): at android.view.ViewGroup.layout(ViewGroup.java:4224) 01-30 17:07:33.983: 
      E/AndroidRuntime(21042): at android.widget.FrameLayout.onLayout(FrameLayout.java:431) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at android.view.View.layout(View.java:11278) 01-30 17:07:33.983: 
      E/AndroidRuntime(21042): at android.view.ViewGroup.layout(ViewGroup.java:4224) 01-30 17:07:33.983: 
      E/AndroidRuntime(21042): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1489) 
01-30 17:07:33.983: E/AndroidRuntime(21042): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at android.os.Handler.dispatchMessage(Handler.java:99) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at android.os.Looper.loop(Looper.java:137) 01-30 17:07:33.983: 
      E/AndroidRuntime(21042): at android.app.ActivityThread.main(ActivityThread.java:4424) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at java.lang.reflect.Method.invokeNative(Native Method) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at java.lang.reflect.Method.invoke(Method.java:511) 01-30 17:07:33.983: 
      E/AndroidRuntime(21042): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
01-30 17:07:33.983: E/AndroidRuntime(21042): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at dalvik.system.NativeStart.main(Native Method) 01-30 17:07:33.983: 
      E/AndroidRuntime(21042): Caused by: java.lang.reflect.InvocationTargetException 01-30 17:07:33.983: 
      E/AndroidRuntime(21042): at java.lang.reflect.Constructor.constructNative(Native Method) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 01-30 
17:07:33.983: E/AndroidRuntime(21042): at android.view.LayoutInflater.createView(LayoutInflater.java:586) 01-30 
17:07:33.983: E/AndroidRuntime(21042): ... 35 more 01-30 
17:07:33.983: E/AndroidRuntime(21042): Caused by: java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x2 
01-30 17:07:33.983: E/AndroidRuntime(21042): at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:463) 
01-30 17:07:33.983: E/AndroidRuntime(21042): at android.view.View.<init>(View.java:2791) 01-30 17:07:33.983: 
      E/AndroidRuntime(21042): at android.widget.TextView.<init>(TextView.java:449) 01-30 17:07:33.983: 
      E/AndroidRuntime(21042): at com.itusozluk.itemadapter.widget.itemview.TextItemView.<init>(TextItemView.java:36) 
01-30 17:07:33.983: E/AndroidRuntime(21042): at com.itusozluk.itemadapter.widget.itemview.TextItemView.<init>(TextItemView.java:32) 
01-30 17:07:33.983: E/AndroidRuntime(21042): ... 38 more 

나는 가장 중요한 부분이라고 생각 :

java.lang.UnsupportedOperationException: Can't convert to dimension: 
type=0x2 01-30 17:07:33.983: E/AndroidRuntime(21042): 

그래서이 있어야합니다 GreenDroid의 치수 파일에서 메팅.

수정 방법은 무엇입니까? 어떻게 GreenDroid의 ItemAdapter를 GDActivity없이 사용할 수 있습니까?

답변

1

실제로 GDActivity 문제가 아니라 주제 문제입니다. 현재 ActionbarSherlock 4와 함께 GreenDroid의 버려진 버전을 사용하고 있습니다.

parent = Theme.Sherlock이있는 테마를 만들어야합니다. 불행히도 여러 개의 부모를 추가 할 수 없으므로 GD 테마의 내용을 복사하여 사용자 정의 테마에 붙여 넣어야합니다.

광산은 다음과 같은 : theme.xml

<resources> 
    <style name="Theme.MyTheme" parent="Theme.Sherlock"> 
     <item name="actionBarStyle">@style/Widget.MyTheme.ActionBar</item> 
     <item name="android:actionBarStyle">?actionBarStyle</item> 

     <!-- GreenDroid stuff --> 
     <item name="gdTextAppearance">@style/TextAppearance</item> 
     <item name="gdTextAppearanceLarge">@style/TextAppearance.Large</item> 
     <item name="gdTextAppearanceMedium">@style/TextAppearance.Medium</item> 
     <item name="gdTextAppearanceSmall">@style/TextAppearance.Small</item> 
     <item name="gdTextAppearanceSeparator">@style/TextAppearance.Separator</item> 

     <item name="gdDrawableWidth">@dimen/gd_drawable_width</item> 
     <item name="gdDrawableHeight">@dimen/gd_drawable_height</item> 
     <item name="gdDrawableMargin">@dimen/gd_drawable_margin</item> 

     <item name="gdItemViewPreferredHeight">@dimen/gd_item_view_height</item> 
     <item name="gdItemViewPreferredHalfHeight">@dimen/gd_item_view_half_height</item> 
     <item name="gdItemViewPreferredPaddingLeft">@dimen/gd_item_view_padding_left</item> 
     <item name="gdSeparatorItemViewPreferredHeight">@dimen/gd_separator_item_view_height</item> 

     <item name="gdTextItemViewStyle">@style/GreenDroid.Widget.ItemView.TextItemView</item> 
     <item name="gdLongTextItemViewStyle">@style/GreenDroid.Widget.ItemView.LongTextItemView</item> 
     <item name="gdDescriptionItemViewStyle">@style/GreenDroid.Widget.ItemView.DescriptionItemView</item> 

     <item name="gdSeparatorItemViewStyle">@style/GreenDroid.Widget.ItemView.SeparatorItemView</item> 

     <item name="gdProgressItemViewStyle">@style/GreenDroid.Widget.ItemView.ProgressItemView</item> 
     <item name="gdProgressItemViewStyleText">@style/GreenDroid.Widget.ItemView.ProgressItemView.Text</item> 
     <item name="gdProgressItemViewStyleProgressBar">@style/GreenDroid.Widget.ItemView.ProgressItemView.ProgressBar</item> 

     <item name="gdDrawableItemViewStyle">@style/GreenDroid.Widget.ItemView.DrawableItemView</item> 
     <item name="gdDrawableItemViewStyleText">@style/GreenDroid.Widget.ItemView.DrawableItemView.Text</item> 
     <item name="gdDrawableItemViewStyleDrawable">@style/GreenDroid.Widget.ItemView.DrawableItemView.Drawable</item> 

     <item name="gdSubtitleItemViewStyle">@style/GreenDroid.Widget.ItemView.SubtitleItemView</item> 
     <item name="gdSubtitleItemViewStyleText">@style/GreenDroid.Widget.ItemView.SubtitleItemView.Text</item> 
     <item name="gdSubtitleItemViewStyleSubtitle">@style/GreenDroid.Widget.ItemView.SubtitleItemView.SubtitleText</item> 

     <item name="gdSubtextItemViewStyle">@style/GreenDroid.Widget.ItemView.SubtextItemView</item> 
     <item name="gdSubtextItemViewStyleText">@style/GreenDroid.Widget.ItemView.SubtextItemView.Text</item> 
     <item name="gdSubtextItemViewStyleSubtext">@style/GreenDroid.Widget.ItemView.SubtextItemView.Subtext</item> 

     <item name="gdThumbnailItemViewStyle">@style/GreenDroid.Widget.ItemView.ThumbnailItemView</item> 
     <item name="gdThumbnailItemViewStyleText">@style/GreenDroid.Widget.ItemView.ThumbnailItemView.Text</item> 
     <item name="gdThumbnailItemViewStyleSubtitle">@style/GreenDroid.Widget.ItemView.ThumbnailItemView.Subtitle</item> 
     <item name="gdThumbnailItemViewStyleThumbnail">@style/GreenDroid.Widget.ItemView.ThumbnailItemView.Thumbnail</item> 
    </style> 
</resources> 

는 사용자 지정 테마에 activitie의 테마를 설정해야합니다.

관심이 있으시면 https://github.com/croemmich/GreenDroid에서 내 GD 버전을 다운로드 할 수 있습니다. ActionBar의 모든 것을 제거했습니다.