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

DB연동하여 커스텀 리스트뷰에 이미지 올리는 에러

0 추천

안녕하세요 지금 DB를 연동해서 dB내 값을 긁어와 커스텀 리스트뷰에 뿌리고 각각의 리스트 왼쪽에는 이미지를 넣을려고합니다. 

DB를 데이터를 가져오는것까지는 하겠는데 이미지를 어떻게 가져와야 할지를 모르겠습니다.

현재 DB내에 이미지 경로를 넣어두었고 assset폴더에 모든 사진을 넣어뒀습니다.

여기저기 돌아다니며 검색하고 알아보았는데 정확히 ID에 어떤 값을 넣어야 하는지 그리고 어떻게 접근하여 

커스텀뷰에 뿌려주어야 하는지 자세히 알고싶습니다.

지금까지 한 모든 소스와 에러내용 올립니다. 조언 부탁드립니다.


import java.io.File;
import java.util.ArrayList;

import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.syso.baseballproject.R;

public class Daegu_List extends ListActivity {
	
	int[] idlist;
	TextView courseName;
	ImageView courseImage;
	ListView daegu_list;
	ImageButton map;
	Intent i;

	int courseNum;

	dbAdapter dbAdt;
	Cursor mCursor;

	public ArrayList<DataVO> CourseList;

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

		// 코스이름 설정
		courseName = (TextView) findViewById(R.id.course_name);
		courseName.setText("대구 야구장 주변 맛집");

		// CourseList 객체생성==>DB값 리스트에 넣어줌
		CourseList = new ArrayList<DataVO>();

		// DB객체 생성 및 오픈
		dbAdt = new dbAdapter(this);
		dbAdt.open();

		daegu_list = (ListView) findViewById(android.R.id.list);

		// 커서 쿼리문
		mCursor = dbAdt.selectFood("mokdong");

		// 엑티비티가 커서 관리
		startManagingCursor(mCursor);

		// 커스텀 리스트뷰에 DB내 자료 CourseList에 넣음.
//		mCursor.moveToFirst();
		Log.e("mCursorCount", "" + mCursor.getCount());
//		do {
//			if (mCursor != null && !(mCursor.isAfterLast())) {
//	
//				DataVO tmp = new DataVO();
//				tmp.setName(mCursor.getString(2));
//				tmp.setType(mCursor.getString(1));
//				tmp.setImage(mCursor.getInt(6));
//				String phone = "";
//				try {
//					phone = mCursor.getString(5);
//					tmp.setTel(mCursor.getString(5));
//				} catch (Exception e) {
//					tmp.setTel("");
//				}
//				tmp.setInfo(mCursor.getString(3));
//				tmp.setAddr(mCursor.getString(4));
//				CourseList.add(new DataVO(tmp));
//				}
//		} while (mCursor.moveToNext());
		
		
		for(int i =0 ; i<5;i++){
		do{
			if(mCursor.getInt(0)==idlist[i]){
				DataVO tmp = new DataVO();
				tmp.setName(mCursor.getString(2));
				tmp.setType(mCursor.getString(1));
				tmp.setImage(mCursor.getInt(6));
				String phone = "";
				try {
					phone = mCursor.getString(5);
					tmp.setTel(mCursor.getString(5));
				} catch (Exception e) {
					tmp.setTel("");
				}
				tmp.setInfo(mCursor.getString(3));
				tmp.setAddr(mCursor.getString(4));
				CourseList.add(new DataVO(tmp));
//				}
				CourseList.add(tmp);
				break;
			}
		}while(mCursor.moveToNext());
		mCursor.moveToFirst();
		}

		

		CustomListAdapter locListAdapter = new CustomListAdapter(this,
				R.layout.row, CourseList);
		setListAdapter(locListAdapter);
		registerForContextMenu(getListView());
		daegu_list.setAdapter(locListAdapter);

		map = (ImageButton) findViewById(R.id.map);
		map.setOnClickListener(new View.OnClickListener() {
			public void onClick(View arg0) {
				i = new Intent(Daegu_List.this, Daegu_MapViewer.class);
				startActivity(i);
				
			}
		});
	}

	/****************************************************************/

	/* 커스텀어댑터 정의 */
	private class CustomListAdapter extends ArrayAdapter<DataVO> {
		ArrayList<DataVO> locArray;


		// 뉴스리스트어댑터 생성자
		public CustomListAdapter(Context context, int layout,
				ArrayList<DataVO> locArray) {
			super(context, layout, locArray);
			this.locArray = locArray;
		
		}
		
	

		
		public View getView(int position, View convertView, ViewGroup parent) {
			View v = convertView;
			if (v == null) {
				LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
				v = li.inflate(R.layout.row, null);
			}

			/* position은 리스트가 위치한 상대값 (0부터 시작해서 증가) */
			DataVO locdata = (DataVO) locArray.get(position);

			if (locdata != null) {
				TextView locname = (TextView) v.findViewById(R.id.name);
				TextView locaddress = (TextView) v.findViewById(R.id.address);
				ImageView thumbimg = (ImageView) v.findViewById(R.id.image);

				if (thumbimg != null) {
					String imgPath = locdata.getImage() + ".png";
					if (imgPath.length() < 5) {
						File f = new File(imgPath); 
						Bitmap Img = BitmapFactory.decodeFile(imgPath);
						if (Img == null){ 
							thumbimg.setVisibility(View.GONE);
						} else { 
							thumbimg.setVisibility(View.VISIBLE);
							thumbimg.setImageBitmap(Img);
						}
					}
				}

				if (locname != null) { // 장소이름 표시
					locname.setText(locdata.getName());
				}

				if (locaddress != null) {// 주소 받아 오기
					locaddress.setText(locdata.getTel() + ","
							+ locdata.getType());
				}

			}
			return v;
		}
	}
}
 
echo12 (180 포인트) 님이 2013년 10월 2일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...