마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

arrayadpater 이용해서 리스트뷰에 이미지를 넣으면 안되요 ㅜㅜ

0 추천
package com.example.snangwon.bobmutna2;
import java.util.List;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;



public class mAdapter extends ArrayAdapter<restaurant>
{

    public mAdapter( Context context,
                     int resource,
                     int textViewResourceId,
                     List<restaurant> objects )
    {
        super( context, resource, textViewResourceId, objects );
    }

    class ViewHolder
    {
        TextView mNameTv;
        ImageView imgv;

    }

    @Override
    public View getView( int position,
                         View convertView,
                         ViewGroup parent )
    {
        View itemLayout = super.getView( position, convertView, parent );

        ViewHolder  viewHolder = (ViewHolder)itemLayout.getTag();

        if( viewHolder == null )
        {
            viewHolder = new ViewHolder();
            viewHolder.mNameTv =
                    (TextView) itemLayout.findViewById( R.id.name);
            viewHolder.imgv =
                    (ImageView) itemLayout.findViewById( R.id.image);

            itemLayout.setTag( viewHolder );
        }
        viewHolder.mNameTv.setText( getItem( position ).name );
        viewHolder.imgv.setImageResource(R.drawable.umbllera);
        return itemLayout;
    }
}


////list_item.xml

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

<ImageView
    android:id="@+id/img"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_alignParentLeft="true"

    />

<TextView
    android:id="@+id/name"
    android:textSize="20dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_marginRight="30dp"


    />



</RelativeLayout>

이미지 없이 텍스트만 출력하는것은 잘되는데  이미지넣으니 앱이 꺼지네요 ㅠㅠ

이것때문에 몇시간째 앓고 있습니다...

getview 함수 안에 viewHolder.imgv.setImageResource(R.drawable.umbllera); 이부분이 문제인것 같아요..

xml에 imageview 에 고정값으로 drawble id를 넣어서 출력하면 잘 나오더라고요

프로그래밍왕이될남자 (340 포인트) 님이 2015년 4월 26일 질문

1개의 답변

+1 추천

1. ArrayAdapter 코드를 보면

 viewHolder.imgv = (ImageView) itemLayout.findViewById( R.id.image);

로 ImageView의 아이디가 image라고 되어있습니다. 하지만 Xml부분을 보자면

<ImageView    android:id="@+id/img"

Id가 img로 되어있네요 ImageView의 아이디 설정이 잘못되어 있으니 ImageView 객체를 가져오지 못하고 Null 상태에서 setResource 함수를 사용하니 문제가 생기는것 같습니다.

2. 로그캣이 있으면 더 에러를 알아보기 쉬울거 같네요

꾸준히 노력하기 (260 포인트) 님이 2015년 4월 27일 답변
...