336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Android Database 데이터 조회
이전에 했던 Android Database 생성과 입력을 이어서 데이터를 조회 하는 기능을 배워본다
DB 버튼 옆에 하나의 버튼을 또 생성해서 아래에 DB의 데이터들을 가져와서 출력을 해줄 것이다
우선 버튼을 하나 생성한다 그리고 그 밑에 ListView를 하나 생성한다
그리고 이제 메인에서 버튼과 ListView를 생성해준다
그리고 나서 btnSelectAllDatas를 클릭 했을 시 ListView를 보여주는 로직을 먼저 작성한다
각각 다른 버튼을 클릭 시 lvPersons 즉 리스트 뷰를 보이지 않게 INVISIBLE 처리를 해준다
그리고 나서 이제 DBHelper에서 DAO를 하나 생성한다
* getAllPersons Method
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public List<Person> getAllPersons() {
StringBuffer sb = new StringBuffer();
sb.append(" SELECT _ID, NAME, AGE, PHONE FROM TEST_TABLE ");
// 일기 전용 DB 객체
SQLiteDatabase db = getReadableDatabase();
// SELECT 실행
Cursor cursor = db.rawQuery(sb.toString(), null);
List<Person> persons = new ArrayList<Person>();
Person person = null;
while ( cursor.moveToNext() ) {
person = new Person();
person.set_id(cursor.getInt(0));
person.setName(cursor.getString(1));
persons.add(person);
}
return persons;
}
|
cs |
id와 Name만 보여준 후 Detail에서 다른 정보들을 보여주기로 한다
이제는 다시 Main에 와서 나머지 로직을 작성해주면 된다
우선 dbHelper가 없다면 즉 DB가 생성되지 않았다면 생성을 먼저 해주게 걸러 준 후 List<Person>을 받아온다
이제 ListView에 뿌려주기 위해서는 Adapter와 Holder를 작성한다
* Adapter와 Holder
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
private class PersonListAdapter extends BaseAdapter {
private List<Person> persons;
private Context context;
public PersonListAdapter(List<Person> persons, Context context) {
this.persons = persons;
this.context = context;
}
@Override
public int getCount() {
return this.persons.size();
}
@Override
public Object getItem(int position) {
return this.persons.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder = null;
if ( convertView == null ) {
convertView = new LinearLayout(context);
((LinearLayout) convertView).setOrientation(LinearLayout.HORIZONTAL);
TextView tvId = new TextView(context);
TextView tvName = new TextView(context);
((LinearLayout) convertView).addView(tvId);
((LinearLayout) convertView).addView(tvName);
holder = new Holder();
holder.tvId = tvId;
holder.tvName = tvName;
convertView.setTag(holder);
}
else {
holder = (Holder) convertView.getTag();
}
Person person = (Person) getItem(position);
holder.tvId.setText(person.get_id() + "");
holder.tvName.setText(person.getName());
return convertView;
}
}
private class Holder {
public TextView tvId;
public TextView tvName;
}
|
cs |
위와 같이 ListView를 뿌려주기 위한 Adapter와 Holder를 작성한 후 이제 ListView를 뿌려주는 Adapter를 set 시켜주면 된다
* btnSelectAllDatas OnClick
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
btnSelectAllDatas = (Button) findViewById(R.id.btnSelectAllDatas);
btnSelectAllDatas.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// ListView를 보여준다
lvPersons.setVisibility(View.VISIBLE);
// Person 데이터를 모두 가져온다
if ( dbHelper == null ) {
dbHelper = new DBHelper(MainActivity.this, "TEST", null, 1);
}
List<com.ktds.hskim.mydatabase.vo.Person> persons = dbHelper.getAllPersons();
// ListView에 Person 데이터를 보여준다
lvPersons.setAdapter(new PersonListAdapter(persons, MainActivity.this));
}
});
|
cs |
이제 결과를 확인해본다
DATA 가져오기를 누르면 데이터가 뜨는 것을 볼 수 있다
다른 버튼인 DB 생성을 누르면 데이터가 사라지는 것을 볼 수 있다
'[ Developer ] > Android' 카테고리의 다른 글
[Android] 안드로이드 웹 서버 연동 Android to Spring (0) | 2016.07.29 |
---|---|
[Android] 안드로이드 SQLite 컬럼 추가 (1) | 2016.07.28 |
[Android] 안드로이드 DB SQLite 데이터 입력 (0) | 2016.07.26 |
[Android] 안드로이드 DB SQLite 생성 (0) | 2016.07.25 |
[Android] 안드로이드 APK 파일 생성하기 (0) | 2016.07.24 |