2017-11-22 1 views
0

Android 프로그래밍을 처음 접했고 레이아웃이있는 목록보기 항목을 만들고 싶습니다.안드로이드 | 보기에 레이아웃을 추가하는 방법

final ListView lv = (ListView) findViewById(R.id.lv); 
String[] fruits = new String[] { "A", "B", "C" }; 
final List<String> fruits_list = new ArrayList<>(Arrays.asList(fruits)); 

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String> (this, android.R.layout.simple_list_item_1, fruits_list) { 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent){ 
     View view = super.getView(position,convertView,parent); 
     view.setLayoutParams(new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT)); 
     LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = layoutInflater.inflate(R.layout.row2,null); // code is working without these code but no layout 
     return view; 
    } 
}; 

lv.setAdapter(arrayAdapter); 

코드는 내가 = layoutInflater.inflate (R.layout.row2, 널 (null))보기를 포함하지 않는 경우 노력하고 있습니다; 이지만 레이아웃이없고 텍스트 만 있습니다. 나는 그것을 디자인하고 싶다.

view = layoutInflater.inflate (R.layout.row2, null); , 오류가

You must supply a resource ID for a TextView 

및 표시

FATAL EXCEPTION: main 
    Process: com.example.sample.myapplication, PID: 30783 
    java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView 
     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:401) 
     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:371) 
     at com.example.sample.myapplication.MainActivity$1.getView(MainActivity.java:51) 
     at android.widget.AbsListView.obtainView(AbsListView.java:2363) 
     at android.widget.ListView.measureHeightOfChildren(ListView.java:1326) 
     at android.widget.ListView.onMeasure(ListView.java:1233) 
     at android.view.View.measure(View.java:19857) 
     at android.support.constraint.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:934) 
     at android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:973) 
     at android.view.View.measure(View.java:19857) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) 
     at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139) 
     at android.view.View.measure(View.java:19857) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) 
     at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:400) 
     at android.view.View.measure(View.java:19857) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) 
     at android.view.View.measure(View.java:19857) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) 
     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) 
     at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) 
     at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) 
     at android.view.View.measure(View.java:19857) 
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) 
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) 
     at com.android.internal.policy.DecorView.onMeasure(DecorView.java:689) 
     at android.view.View.measure(View.java:19857) 
     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2275) 
     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1366) 
     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1619) 
     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254) 
     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6337) 
     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874) 
     at android.view.Choreographer.doCallbacks(Choreographer.java:686) 
     at android.view.Choreographer.doFrame(Choreographer.java:621) 
     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860) 
     at android.os.Handler.handleCallback(Handler.java:751) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:154) 
     at android.app.ActivityThread.main(ActivityThread.java:6119) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
    Caused by: java.lang.ClassCastException: android.support.constraint.ConstraintLayout cannot be cast to android.widget.TextView 
     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:388) 
     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:371)  
     at com.example.sample.myapplication.MainActivity$1.getView(MainActivity.java:51)  
     at android.widget.AbsListView.obtainView(AbsListView.java:2363)  
     at android.widget.ListView.measureHeightOfChildren(ListView.java:1326)  
     at android.widget.ListView.onMeasure(ListView.java:1233)  
     at android.view.View.measure(View.java:19857)  
     at android.support.constraint.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:934)  
     at android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:973)  
     at android.view.View.measure(View.java:19857)  
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)  
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)  
     at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)  
     at android.view.View.measure(View.java:19857)  
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)  
     at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:400)  
     at android.view.View.measure(View.java:19857)  
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)  
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)  
     at android.view.View.measure(View.java:19857)  
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)  
     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)  
     at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)  
     at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)  
     at android.view.View.measure(View.java:19857)  
     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083)  
     at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)  
     at com.android.internal.policy.DecorView.onMeasure(DecorView.java:689)  
     at android.view.View.measure(View.java:19857)  
     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2275)  
     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1366)  
     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1619)  
     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)  
     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6337)  
     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)  
     at android.view.Choreographer.doCallbacks(Choreographer.java:686)  
     at android.view.Choreographer.doFrame(Choreographer.java:621)  
     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)  
     at android.os.Handler.handleCallback(Handler.java:751)  
     at android.os.Handler.dispatchMessage(Handler.java:95)  
     at android.os.Looper.loop(Looper.java:154)  
     at android.app.ActivityThread.main(ActivityThread.java:6119)  
     at java.lang.reflect.Method.invoke(Native Method)  
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
+0

시도해보십시오. 오류를 계속 표시하는 데 도움이되도록 노력하겠습니다. https://stackoverflow.com/questions/8166497/custom-adapter-for-list-view –

답변

0

android.R.layout.simple_list_item_1 그냥 텍스트 뷰가 포함되어 있기 때문에 오류가 발생하고, R.layout.row2에서 부풀려은 아마 다른 것을 포함 :

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/text1" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:textAppearance="?android:attr/textAppearanceListItemSmall" 
android:gravity="center_vertical" 
android:paddingStart="?android:attr/listPreferredItemPaddingStart" 
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" 
android:minHeight="?android:attr/listPreferredItemHeightSmall" /> 

그것은 당신이 ConstraintLayout이 포함 된 각 항목의 레이아웃으로 R.layout.row2을 사용하려는 것 같습니다? 당신은 같은 ArrayAdapter와 선언에 레이아웃을 교체 시도 할 수 있습니다 : 당신이이 ArrayAdapter와 기본 클래스에서 처리됩니다으로 레이아웃을 팽창 할 필요가 없습니다이 경우

final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String> (this, R.layout.row2, fruits_list) 

합니다.

+0

비록 내가보기를 팽창시키지 않더라도 – bonsoy

관련 문제