안녕하세요 지금 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;
}
}
}