안드로이드 개발 질문/답변
(글 수 45,052)
=====================================================
public class retest extends Activity {
ProductDBHelper mHelper;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView list;
mHelper = new ProductDBHelper(this);
Cursor cursor;
SQLiteDatabase db = mHelper.getWritableDatabase();
cursor = db.rawQuery("SELECT * FROM product", null);
startManagingCursor(cursor);
SimpleCursorAdapter Adapter = null;
Adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_2,
cursor, new String[] { "dbname", "dbteam" },
new int[] { android.R.id.text1, android.R.id.text2});
list = (ListView)findViewById(R.id.list);
list.setAdapter(Adapter);
}
}
class ProductDBHelper extends SQLiteOpenHelper {
public ProductDBHelper(Context context) {
super(context, "Product.db", null, 1);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE product ( _id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"dbname TEXT, dbphone TEXT, dbmphone TEXT, dbrespon TEXT, dbteam TEXT, dbpart TEXT);");
db.execSQL("INSERT INTO product VALUES (null, '홍길동', '054-000-0000', '010-0000-0000', '관리', '직원', '경북');");
db.execSQL("INSERT INTO product VALUES (null, '이순신', '054-111-1111', '010-0000-0000', '생산', '직원', '경북');");
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS product");
onCreate(db);
}
}
=================================================================
위 코드가 현재 기본 코드입니다 ㅜㅜ 디비-> 어덥터-> 리스트뷰
문제는 리스트뷰에서 아이템 클릭해서 해당 아이템의 값을 가져올려는데 안됨 ㅜ,.ㅜ
위 코드 실행하면
-------------------------
홍길동
직원
<meta charset="utf-8">-------------------------
이순신 <= "dbname"
직원 <= "dbteam"
<meta charset="utf-8">-------------------------
이렇게 나옵니다 "이순신; 직원" 클릭시 이순신 값만 가져오고 싶은데 어떻게 해야할지 모르겠습니다 ㅜ,.ㅜ
구문 코드 작성 좀 도와주세요 ㅜ,.ㅜ
2010.08.17 12:32:29
ListView에 대한 샘플들을 참조하시면 될텐데요.
OnItemClickListener를 이용하시면 클릭된 Item의 position을 얻어올 수 있습니다. 거기서 원하는 작업을 처리해 주시면 됩니다.
2010.08.17 14:11:57
리스트 아이템의 모양을 임의로 만들때 어댑터에 getView()란 메소드를 오버라이드 하는건 아실겁니다. 많은 예제가 있으니.
그럼 임의의 아이템을 텍스트뷰 두개가 있는 형태로 만든다고 한다면?? 그걸 단순화 시키면 android.R.layout.simple_list_item_2의 내용이겠죠.
안드로이드기술자가 미리 만들어 상수로 정해놓은 simple_list_item_2(ArrayList+TextView 2개있는 형태) 를 단순히 사용하는데 각각의 텍스트뷰 정보를 얻어 올수가 없죠.(원래 그런 복잡한 목적으로 사용할게 아니라 대충 불러다 표시만 해보는 목적일테니...)
하지만 자주 해보던 예제처럼 getView()를 오버라이드 하던거 보면 각각의 뷰에 대한 정보를 다를수 있죠 .
simple_list_item_2 를 사용해서 본래 목적(??)인 표시만 하는 단순한 용도로 사용하시던가
새로운 어댑터를 만들어 리스트의 각각의 아이템을 콘트롤 하시던가 해야겠죠.
반드시 심플커서어댑터를 쓰셔야겠다면 심플커서어댑터를 상속해 안의 내용을 뜯어고치다보면(혹은 소스를 복사해다가) 거기에도 getView()가 나오겠죠? ?
http://www.androidpub.com/591578
그럼 임의의 아이템을 텍스트뷰 두개가 있는 형태로 만든다고 한다면?? 그걸 단순화 시키면 android.R.layout.simple_list_item_2의 내용이겠죠.
안드로이드기술자가 미리 만들어 상수로 정해놓은 simple_list_item_2(ArrayList+TextView 2개있는 형태) 를 단순히 사용하는데 각각의 텍스트뷰 정보를 얻어 올수가 없죠.(원래 그런 복잡한 목적으로 사용할게 아니라 대충 불러다 표시만 해보는 목적일테니...)
하지만 자주 해보던 예제처럼 getView()를 오버라이드 하던거 보면 각각의 뷰에 대한 정보를 다를수 있죠 .
simple_list_item_2 를 사용해서 본래 목적(??)인 표시만 하는 단순한 용도로 사용하시던가
새로운 어댑터를 만들어 리스트의 각각의 아이템을 콘트롤 하시던가 해야겠죠.
반드시 심플커서어댑터를 쓰셔야겠다면 심플커서어댑터를 상속해 안의 내용을 뜯어고치다보면(혹은 소스를 복사해다가) 거기에도 getView()가 나오겠죠? ?
http://www.androidpub.com/591578
public class Myitems
{
String Id;
String Title;
String Sub;
Myitem()
{
초기화
}
}
이런식으로 어레이 리스트를 만들고, 거기에 클래스를 넣어서 전 리스트를 별도 관리합니다.
클릭시 포지션 나오면 어레이에서 그 포지션 가져오면 되구요..