2013-10-18 4 views
0

IMA 내 목록보기에 이미지를 추가하려고하지만 난이 오류가있어 :안드로이드 비트 맵은 ListView에

You must supply a resource ID for a TextView 

을이 메뉴의 레이아웃, menu.xml는 :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/sahovnica" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MenuActivity" > 

<ImageView 
    android:id="@+id/imageView_Menu_Title" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:contentDescription="@string/app_name" 
    android:src="@drawable/vh_title" /> 

<ListView 
    android:id="@+id/listView_Menu" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/imageView_Menu_Title" > 

</ListView> 

이것은이다 list_item.xml :

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<ImageView 
    android:id="@+id/imageView_List_Item" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:contentDescription="@string/app_name" 
    android:src="@drawable/ic_launcher" /> 

</RelativeLayout> 

나는 내가 ArrayAdapter와 일부 문자열을 넣어 항목으로 텍스트 뷰 list_item.xml에 넣어 tryed하고 여전히 일을 일부러 있기 때문에 (오류)를 의미 할 것입니다 무엇을 잘 모릅니다

public class MenuActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.menu); 

    ListView list = (ListView)findViewById(R.id.listView_Menu); 

    Bitmap[] images = { decodeImage(R.drawable.igraj), 
          decodeImage(R.drawable.rezultati), 
      decodeImage(R.drawable.postavke), 
      decodeImage(R.drawable.pomoc), decodeImage(R.drawable.izlaz)}; 

    ArrayAdapter<Bitmap> adapter = new ArrayAdapter<Bitmap>(this, R.layout.list_item, 
                    images); 

    list.setAdapter(adapter); 

} 

private Bitmap decodeImage(int res) { 
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(),res);    
    return bitmap;  
} 

} 

: 그리고 이것은 내 코드입니다 그러나 나는 이유를 알 수 없다. 미리 감사드립니다. ArrayAdapter Documentation에서

+0

사용자 정의 어댑터를 사용하십시오. – Raghunandan

답변

0

:

당신은 당신의 자신의 BaseAdapter 구현을 만들거나 자신의 ArrayAdapter 서브 클래스를 생성하고 getView()을 무시하거나 필요

By default this class expects that the provided resource id references a single TextView. If you want to use a more complex layout, use the constructors that also takes a field id. That field id should reference a TextView in the larger layout resource.

[...]

To use something other than TextViews for the array display, for instance, ImageViews, or to have some of data besides toString() results fill the views, override getView(int, View, ViewGroup) to return the type of view you want.

. 당신이 볼 수 있듯이, 당신은 TextView에 명시해야합니다

A concrete BaseAdapter .......to use a more complex layout, use the constructors that also takes a field id. That field id should reference a TextView in the larger layout resource. 

: ArrayAdapter의 문서에서

@Override 
public View getView (int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = ((Activity) mContext).getLayoutInflater(); 
    row = inflater.inflateR.layout.list_item, parent, false); 

    return row; 
} 
0

: 다음과 같이 보일 수있는 이미지를 사용

간단한 getView() R.layout.list_item이 참조하는 레이아웃 파일에서. 해당 레이아웃에 ImageView 만 있습니다. TextView 년대에 국한되지 않습니다 더 복잡한 뷰 (대한

, 난 당신이 BaseAdapter 당신 자신의 구현을 사용하는 것이 좋습니다. 생성자의 ArrayAdapter와

http://developer.android.com/reference/android/widget/ArrayAdapter.html

다른 사람이 가지고있는 중

0

봐 CustomAdapter 사용을 제안하십시오.

public class MenuActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.menu); 
    ListView list = (ListView)findViewById(R.id.listView_Menu); 
    String[] a ={"hi","bye"}; 
    Bitmap[] images = { decodeImage(R.drawable.igraj), 
         decodeImage(R.drawable.rezultati), 
         decodeImage(R.drawable.postavke), 
         decodeImage(R.drawable.pomoc),    
         decodeImage(R.drawable.izlaz) 
         }; 
    CustomAdapter adapter = new CustomAdapter(images); 
    list.setAdapter(adapter); 

} 

private Bitmap decodeImage(int res) { 
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(),res);    
    return bitmap;  
} 
class CustomAdapter extends BaseAdapter 
{ 
    Bitmap images[]; 
    LayoutInflater inflater; 
    public CustomAdapter(Bitmap[] Images) 
    { 
     images=Images; 
     inflater= LayoutInflater.from(MenuActivity.this); 

    } 
    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return images.length; 
    } 
    @Override 
    public Object getItem(int arg0) { 
     // TODO Auto-generated method stub 
     return arg0; 
    } 
    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     ViewHolder holder; 
     if(convertView==null) 
     { 
      holder = new ViewHolder(); 
      convertView = inflater.inflate(R.layout.list_item, null); 
      holder.iv= (ImageView) convertView.findViewById(R.id.imageView_List_Item); 
      convertView.setTag(holder); 
     } 
     else { 
      holder = (ViewHolder)convertView.getTag(); 
     } 
     holder.iv.setImageBitmap(images[position]); 
     return convertView; 
    } 

} 
class ViewHolder 
{ 
    ImageView iv; 
} 
} 
관련 문제