0

행 (목록 항목)에 대한 사용자 정의 레이아웃이있는 ListView가 있고 목록에 평소와 같이 어댑터가 채워집니다. 이 사용자 정의 레이아웃에서 ImageView 및 TextView를 추가 했으므로 텍스트와 일치하는 아이콘이 있습니다. 나는 ListView에서 위치를 기반으로 ImageView를 얻을 수 없다. (텍스트를 분명히 표시 할 수 있도록 아이콘을 설정할 필요가있다.) 오류 로그에서 얻을 수있는 유일한 실제 정보는 오류가있는 행이다. 그러나 나는 그것을 어떻게해서든지 게시 할 것이다. 어떤 도움이라도 대단히 감사합니다. ListView를 제거하고, RelativeLayouts을 만들고, LinearLayout에 포함시키고, Scrollview 내부에 넣는 등의 혼란을 피하고 싶습니다.Android : ListView 행 레이아웃을 만드는 데 사용되는 ViewGroup에서보기

관련 코드 : -

ListView listView = (ListView) findViewById(R.id.servicelist); 
String[] values = new String[] { "Choice0", "Choice1", "Choice2", 
     "Choice3", "Choice4", "Choice5" }; 

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.services_row, 
android.R.id.text1, values); 

listView.setAdapter(adapter); 

for(int position=0; position<11; position++){ 
    ViewGroup rowView = (ViewGroup) listView.getChildAt(position); 
    ImageView icon = (ImageView) rowView.findViewById(R.id.service_row_icon); //ERROR HERE 
    switch(position){ 
    case 0:{ icon.setImageResource(R.drawable.ic_launcher); break; } 
    case 1:{ icon.setImageResource(R.drawable.ic_launcher); break; } 
    //ETC ETC More cases go here, irrelevant code 
    } 
} 

행 레이아웃 (service_row.xml) : -

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal"> 

<ImageView 
    android:id="@+id/service_row_icon" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/icon" 
    android:paddingLeft="5dp" 
    android:paddingRight="5dp"/> 

<TextView 
    android:id="@+id/service_row_text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textColor="#33b5e5" 
    android:paddingLeft="5dp"/> 

</LinearLayout> 

오류 로그 : -

06-28 01:46:31.581: E/AndroidRuntime(18070): FATAL EXCEPTION: main 
06-28 01:46:31.581: E/AndroidRuntime(18070): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dragonheart.autodroid/com.dragonheart.autodroid.ServiceClasses.AddServiceActivity}: java.lang.NullPointerException 
06-28 01:46:31.581: E/AndroidRuntime(18070): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968) 
06-28 01:46:31.581: E/AndroidRuntime(18070): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993) 
06-28 01:46:31.581: E/AndroidRuntime(18070): at android.app.ActivityThread.access$600(ActivityThread.java:127) 
06-28 01:46:31.581: E/AndroidRuntime(18070): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159) 
06-28 01:46:31.581: E/AndroidRuntime(18070): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-28 01:46:31.581: E/AndroidRuntime(18070): at android.os.Looper.loop(Looper.java:137) 
06-28 01:46:31.581: E/AndroidRuntime(18070): at android.app.ActivityThread.main(ActivityThread.java:4507) 
06-28 01:46:31.581: E/AndroidRuntime(18070): at java.lang.reflect.Method.invokeNative(Native Method) 
06-28 01:46:31.581: E/AndroidRuntime(18070): at java.lang.reflect.Method.invoke(Method.java:511) 
06-28 01:46:31.581: E/AndroidRuntime(18070): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980) 
06-28 01:46:31.581: E/AndroidRuntime(18070): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747) 
06-28 01:46:31.581: E/AndroidRuntime(18070): at dalvik.system.NativeStart.main(Native Method) 
06-28 01:46:31.581: E/AndroidRuntime(18070): Caused by: java.lang.NullPointerException 
06-28 01:46:31.581: E/AndroidRuntime(18070): at com.dragonheart.autodroid.ServiceClasses.AddServiceActivity.onCreate(AddServiceActivity.java:43) 
06-28 01:46:31.581: E/AndroidRuntime(18070): at android.app.Activity.performCreate(Activity.java:4465) 
06-28 01:46:31.581: E/AndroidRuntime(18070): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052) 
06-28 01:46:31.581: E/AndroidRuntime(18070): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932) 
06-28 01:46:31.581: E/AndroidRuntime(18070): ... 11 more 
+0

앱이 다운 될 때마다 ** 전체 logcat 추적을 게시해야합니다. – Sam

+0

미안 해요, 내 마음을 미끄러 뜨 렸습니다. 저에게 상기시켜 주셔서 감사합니다 ^^ –

+0

:'ImageView icon = (ImageView) rowView.findViewById (R.id.service_row_icon);'line 40? – Sam

답변

1

당신이해야 할 당신의 getView을 내부 어댑터가 아닌 어댑터의. 프레임 워크가 원하는 목록의 많은보기 중 단서를 가지고 있지 않기 때문에 충돌이 발생합니다.

어댑터 내부에서는 위치를 알고 적절한보기를 반환 할 수 있습니다.

+0

오, 이제 알겠습니다. 고마워, 나는 그것을 밖으로 시도하고 어떻게 빨리 밝혀 알게됩니다. –

+0

예! 이것은 완벽하게 작동했습니다. 정말 고맙습니다. 정확한 해결책은 내가 여기에 게시하기에는 너무 길다. 불행히도 누군가가 원할 경우에 대비해 링크를 게시해야하지만 실제로이 대답만으로도 문제를 해결할 수있다. 다시 한 번 감사드립니다! 링크 : - http://android-er.blogspot.in/2010/06/using-convertview-in-getview-to-make.html –