안드로이드 개발 질문/답변
(글 수 45,052)
package Gunho.Project01;
import java.util.*;import android.app.*;
import android.content.*;
import android.database.*;
import android.database.sqlite.*;
import android.os.*;
import android.view.*;
import android.widget.*;
public class Home extends ListActivity {
ProductDBHelper helper;
Cursor cursor;
SimpleCursorAdapter adapter;
SQLiteDatabase db;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
helper=new ProductDBHelper(this);
db=helper.getWritableDatabase();
cursor=db.rawQuery("select * from home", null);
startManagingCursor(cursor);
adapter=new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2,cursor,new String[]{"title","con"},
new int[]{android.R.id.text1,android.R.id.text2});
setListAdapter(adapter);
}
public void onListItemClick(ListView list,View view,int position,long id){
Intent intent;
intent=new Intent(Home.this,Home_sub.class);
intent.putExtra("basic", position);
startActivityForResult(intent,position);
}
}class ProductDBHelper extends SQLiteOpenHelper{
public ProductDBHelper(Context context){
super(context,"Project.db",null,1);
}
public void onCreate(SQLiteDatabase db){
//Product.db가 없을경우 호출됨
db.execSQL("create table home(_id integer primary key autoincrement, "+"title text, con text);");
db.execSQL("insert into home values(null,'기본기','가장 );");
db.execSQL("insert into home values(null,'초급','기본개념);");
db.execSQL("insert into home values(null,'중급','초급 기술보다 어렵습니다');");
db.execSQL("insert into home values(null,'고급','초급,중급이 몸에 익숙하시면 좋습니다');");
db.execSQL("insert into home values(null,'장소별','장소.');");
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
}
}<home.java>이구 보내는 곳입니다.아래는 받는 부분입니다.
package Gunho.Project01;
import java.util.*;
import android.app.*;
import android.content.*;
import android.database.*;
import android.database.sqlite.*;
import android.os.*;
import android.view.*;
import android.widget.*;
public class Home_sub extends ListActivity {
ProductDBHelper helper;
Cursor cursor;
SimpleCursorAdapter adapter;
ArrayList<String> general;
SQLiteDatabase db;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
helper=new ProductDBHelper(this);
db=helper.getWritableDatabase();
Intent intent=getIntent();
int flag=intent.getIntExtra("basic",0);
switch(flag){
case 0:
cursor=db.rawQuery("select * from basic", null);
break;
case 1:
cursor=db.rawQuery("select * from first", null);
break;
case 2:
cursor=db.rawQuery("select * from second", null);
break;
case 3:
cursor=db.rawQuery("select * from third", null);
break;
}
startManagingCursor(cursor);
adapter=new SimpleCursorAdapter(this,android.R.layout.simple_list_item_2,cursor,new String[]{"title","con"},
new int[]{android.R.id.text1,android.R.id.text2});
setListAdapter(adapter);
}//end of onCreate()
public void onListItemClick(ListView list,View view,int position,long id){
}
}<Home_sub.java>
파일입니다. 받는부분이죠
코드들은 이렇고 첨부한 사진은 제가 원하는 겁니다.
대분류 클릭시 작은 분류가 리스트뷰로 나오는 것 까지 됩니다. db를 이용해서요
그리고 나서 작은분류에서 해당사항을 클릭시 그에 대한 제목과 내용을 나오게 하고 싶습니다.
사전처럼 말이죠
그럴려면 작은 분류에서 클릭메쏘드에서 또 보내야 할텐데 그냥 인텐트로 보내서
받는부분<내용까지나올>(새로만들 파일)에서 getIntent()하여 view정보를 빼올 수 있나요?
관련 메소드들을 찾아봐도 해석을 잘못한건지 맞는게 없는거 같더군요 ...
요약 : 큰분류에서 작은분류로 보내집니다(position을 switch이용해서)
작은분류에선 클릭시 그 클릭한 내용의 제목과 관련된 db를 내용으로 보여주고 싶습니다.
(현재 위의 코드는 position으로만 넘기고 받고해서 제가 리스트들의 위치와 개수까지파악해야 하는데 이건 아니라고 생각하여
정보를 받을 때 그 intent에서 상당한 정보을 빼올수 있을거 같습니다. 예를들어 jsp와 mysql이용해서 게시판이라도 만든다 하면
클릭한거의 idx만 넘겨서 그걸로 db서치해서 내용을 출력하는데 .... 그런 느낌입니다.)
그리고 추가적으로
SQLiteOpenHelper를 상속받아서 썼는데
보통 저렇게 쓰나요? 저는 upgrade메쏘드엔 딱히 쓸게 없어서 onCreate에만 없을경우 테이블 생성해라~이런식으로만 썼습니다.
이 글을 보시고 아시는 내용이 조금이나마 있으면 그냥 던져주세요 ㅜ 다 받겠습니다!




ContentProvider 를 공부해 보세요.
DB는 Provider 로 관리하는 것이 좋답니다.