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

listView에서 sqlite값 불러오는 방법 질문요 !

0 추천

현재 배열 값을 만들어서 리스트뷰에 뿌려주는 것을 만들 수 있고 따로 sqlite로 만들 수는 있는데

sqilte값을 불러와서 listView에 뿌려주는 방법을 잘 모르겠어서요.

 

생각해보면 배열 값 대신 sqlite값을 넣어서 adapter에 해당값 적용시켜주면 sqlite값을 listView에 뿌려줄 수 있을 것 같은데

맞는 방법인지, 맞으면 어떻게 하는지 고수님들 답변 좀 부탁드려요 :)

 

아래는 배열 값으로 만든 리스트 뷰 및 sqlite 코드입니다.

 

배열 값으로 만든 리스트뷰

MainActivity.java

package com.example.zlalistviewcustomizing;

import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

public class MainActivity extends Activity {

	ListView listView;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		ArrayList<MyCustomDTO> list = new ArrayList<MyCustomDTO>();
		list.add(new MyCustomDTO(R.drawable.canada, "canada", "canada good"));
		list.add(new MyCustomDTO(R.drawable.france, "france", "france good"));
		list.add(new MyCustomDTO(R.drawable.korea, "korea", "korea very good"));
		list.add(new MyCustomDTO(R.drawable.mexico, "mexico", "mexico good"));
		list.add(new MyCustomDTO(R.drawable.poland, "poland", "poland good"));
		
		listView = (ListView)findViewById(R.id.listView1);
		
		MyCustomAdapter adapter = new MyCustomAdapter(
												getApplicationContext(),
												R.layout.list_row,
												list);
		
		listView.setAdapter(adapter);
	}
}

 

MyCustomAdapter.java

package com.example.zlalistviewcustomizing;

import java.util.ArrayList;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MyCustomAdapter extends BaseAdapter {
	
	Context ctx;
	int layout;
	ArrayList<MyCustomDTO> list;
	LayoutInflater inf;
	
	public MyCustomAdapter(Context ctx, int layout, ArrayList<MyCustomDTO> list) {
		
		this.ctx = ctx;
		this.layout = layout;
		this.list = list;
		
		inf = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
	}
	
	//ListView에서 보여줄 데이터의 개수 지정
	@Override
	public int getCount() {
		return list.size();
	}
	
	//ListView에서 보여줄 객체 지정. getCount()값에 의해서 position 값이 동적으로 변경
	//ex. getCount() 값이 3이면 position 값은 0, 1, 2로 설정되어 getItem 메소드가 3번 수행됨
	@Override
	public Object getItem(int position) {
		return list.get(position);
	}

	//getItem(position) 메소드가 리턴한 객체의 고유 식별값
	//일반적으로 position 값도 고유값이기 때문에 position으로 지정
	@Override
	public long getItemId(int position) {
		return position;
	}
	
	//실제 행(row)을 보여주는 뷰를 생성하는 메소드
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		
		//inflate 메소드를 사용하여 list_row.xml을 View 객체로 변경
		if(convertView == null) {
			convertView = inf.inflate(layout, null);
		}
		
		//converView 변수를 이용해서 list_row.xml에 지정한 위젯 참조
		ImageView imgIcon = (ImageView)convertView.findViewById(R.id.imgIcon);
		TextView txtTitle = (TextView)convertView.findViewById(R.id.txtTitle);
		TextView txtContent = (TextView)convertView.findViewById(R.id.txtContent);

		MyCustomDTO dto = list.get(position);
		
		imgIcon.setImageResource(dto.getImgIcon());
		txtTitle.setText(dto.getTitle());
		txtContent.setText(dto.getContent());
		
		return convertView;		
	}
}

 

sqlite 코드(위와 다른 파일)

MainActivity.java

package com.example.zla;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.CursorAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class MainActivity extends Activity {

	ListView listView;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	
		listView = (ListView)findViewById(R.id.listView1);
		
		//1. 데이터베이스 open
		MySQLiteHandler handler = MySQLiteHandler.open(getApplicationContext());
		
		//2. data insert
		handler.insert("홍길동", 20, "서울");
		handler.insert("이순신", 45, "전라");
		
		//3. data update
		handler.update("홍길동", 10);
		
		//4. data delete
		handler.delete("이순신");
		
		//5. data select
		Cursor c = handler.select();
		
		//Cursor 객체 관리
		//startManagingCursor(c);
		
		SimpleCursorAdapter adapter = new SimpleCursorAdapter(
										getApplicationContext(),
										android.R.layout.simple_list_item_2,
										c,
										new String[]{"name", "address"},
										new int[]{android.R.id.text1,
												  android.R.id.text2},
										CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
		
		listView.setAdapter(adapter);
		
		//6. 데이터베이스 close
		handler.close();
		
	}
}

 

뿌요뿌요 (1,350 포인트) 님이 2015년 1월 29일 질문
뿌요뿌요님이 2015년 1월 29일 수정

1개의 답변

0 추천
 
채택된 답변
쎄미 (162,410 포인트) 님이 2015년 1월 30일 답변
뿌요뿌요님이 2015년 2월 3일 채택됨
감사합니다 . ! 잘 해결했어요 ㅎㅎ
...