안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
디자인 전공인 학생들끼리 앱을 개발하려다보니 어려움이 많니다..
코딩관련 도움좀 부탁드려요^^!!
저희가 하려는 것은
story라는 디비(DB)에서 텍스트를 불러와서 띄우되,
버튼을 x번 째 눌렀을 때는 다른 페이지로 넘어가는 걸 구현하는 것이랍니다^^...
구체적으로, 아래 앱 화면에서 다음 버튼을 눌렀을 때 테스트3 이라는 텍스트 대신
다른 액티비티인 choice.class 의 xml 화면을 띄우고 싶은 것이거든요.
그런데 아직까지는 테스트3이 나오는 것 까지밖에 완성을 못했습니다.
아래 소스의 //★★★★★★★ 부분 수정해야할 것 같은데 맞나요??
미비한 소스 자체에 문제가 있다면 지적해주세요!
cursor.getCount(), cursor.isNull(), cursor.getColumnCount() 등등 써봤는데
커서가 세 번째를 가리키고 있다는 것을 어떻게 알려줘야 할지 정말 모르겠습니다.
또, 위 DB에서 1,2,3,4,5,6 부분을 index라고 하나요?
[code]
package com.andro.project;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class story extends Activity {
TextView result; //출력을 받는 부분
DBHelper dbHelper;
Button nextbt;
final static String dbName = "story.db";
final static int dbVersion = 1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.text);
// TODO Auto-generated method stub
result=new TextView(this);
dbHelper = new DBHelper(this, dbName, null, dbVersion);
SQLiteDatabase db;
String sql;
result = (TextView)findViewById(R.id.result);
db = dbHelper.getReadableDatabase();
sql = "SELECT * FROM story;";
final Cursor cursor = db.rawQuery(sql, null);
//들어온 데이터들을 출력
if(cursor.getCount() > 0){
if(cursor.moveToNext()){
//DB를 순서대로 화면에 띄운다.
result.setText(String.format("\n %s",
cursor.getString(0)));
// result.append(String.format("\n %s",
// cursor.getString(0))); 이렇게 하면 이전 db까지 남아있다.
}
else
result.append("??");
}
else{
result.append("\n조회결과가 없습니다.");
}
nextbt= (Button)findViewById(R.id.nextbt);
nextbt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
cursor.moveToNext();
//★★★★★★★
else
result.setText(String.format("\n %s",
cursor.getString(0)));
}
});
}
}
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class story extends Activity {
TextView result; //출력을 받는 부분
DBHelper dbHelper;
Button nextbt;
final static String dbName = "story.db";
final static int dbVersion = 1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.text);
// TODO Auto-generated method stub
result=new TextView(this);
dbHelper = new DBHelper(this, dbName, null, dbVersion);
SQLiteDatabase db;
String sql;
result = (TextView)findViewById(R.id.result);
db = dbHelper.getReadableDatabase();
sql = "SELECT * FROM story;";
final Cursor cursor = db.rawQuery(sql, null);
//들어온 데이터들을 출력
if(cursor.getCount() > 0){
if(cursor.moveToNext()){
//DB를 순서대로 화면에 띄운다.
result.setText(String.format("\n %s",
cursor.getString(0)));
// result.append(String.format("\n %s",
// cursor.getString(0))); 이렇게 하면 이전 db까지 남아있다.
}
else
result.append("??");
}
else{
result.append("\n조회결과가 없습니다.");
}
nextbt= (Button)findViewById(R.id.nextbt);
nextbt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
cursor.moveToNext();
//★★★★★★★
else
result.setText(String.format("\n %s",
cursor.getString(0)));
}
});
}
}




카운트 변수 하나 두고 버튼 클릭할 때마다 하나씩 증가시키면 되지 않을까요?
그리고 액티비티에서 DB 직접 접근하지 마세요. 따로 분리시키시고 다른 쓰레드에서 돌도록 하세요.