현재 소스가
public class SangpumlistActivity extends ListActivity {
private static final String Q_CREATE_TABLE = "CREATE TABLE sangpumdb (" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT," + "sangpumname TEXT," + "sangpumprice INTEGER,"
+ "area TEXT" + ");";
private final String Q_GET_LIST = "SELECT * FROM sangpumdb"
+ " ORDER BY _id DESC";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sangpumadmin);
/*
* DB에 있는 목록을 가져옵니다. 여기서 가장 주의할 점은 액티비티가 비활성화 상태로 바뀌면 리스트의 목록은 소멸된다는
* 점입니다. 따라서 onResume()이 호출되는 시점에서 다시 한번 리스트를 가져와야 합니다.
*/
getDbData();
}
/** Called when the activity is first created. */
@Override
protected void onResume() {
super.onResume();
/*
* DB에 있는 목록을 다시 가져옵니다.
*/
getDbData();
}
private void getDbData() {
// 데이터베이스 관련 작업들을 초기화합니다.
// DB를 열어서 SQLiteDatabase 인스턴스를 생성합니다.
SQLiteDatabase db = null;
if (db == null) {
db = openOrCreateDatabase("sqlite_test.db",
SQLiteDatabase.CREATE_IF_NECESSARY,
null);
}
// 테이블에서 레코드를 가져오기 전에 테이블이 생성되었는지 확인합니다.
checkTableIsCreated(db);
Cursor c = db.rawQuery(Q_GET_LIST, null);
//startManagingCursor(c);
ListAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_2, c, new String[] {
"sangpumname", "sangpumprice" },
new int[] { android.R.id.text1, android.R.id.text2 });
setListAdapter(adapter);
// 여기서 커서를 닫는 실수를 범해서는 안 됩니다.
// c.close();
// 데이터베이스를 사용을 마치면 SQLiteDatabase 클래스의
// close() 메서드를 호출해야 합니다.
if (db != null) {
db.close();
}
}
private void checkTableIsCreated(SQLiteDatabase db) {
// 테이블 생성을 확인하기 위해 sqlite_master 테이블을 조회합니다.
Cursor c = db.query("sqlite_master", new String[] { "count(*)" },
"name=?", new String[] { "sangpumdb" }, null, null,
null);
Integer cnt = 0;
c.moveToFirst();
while (c.isAfterLast() == false) {
cnt = c.getInt(0);
c.moveToNext();
}
// 커서는 사용 직후에 닫는 것이 중요합니다.
c.close();
// 테이블이 생성되지 않았다면 테이블을 생성합니다.
if (cnt == 0) {
db.execSQL(Q_CREATE_TABLE);
}
}
/* 옵션 메뉴를 생성합니다. */
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(Menu.NONE, Menu.FIRST + 1, Menu.NONE, "새 상품 등록");
return (super.onCreateOptionsMenu(menu));
}
/* 옵션 메뉴의 특정 아이템을 클릭했을 때 필요한 일들을 처리합니다. */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return (itemCallback(item) || super.onOptionsItemSelected(item));
}
/* 아이템의 아이디 값을 기준으로 필요한 일들을 처리합니다. */
public boolean itemCallback(MenuItem item) {
switch (item.getItemId()) {
case Menu.FIRST + 1:
Intent intent = new Intent(SangpumlistActivity.this,
AddListActivity.class);
startActivity(intent);
return true;
}
return false;
}
/* 등록된 사용자를 클릭했을 때 EditListActivity를 호출합니다. */
@Override
public void onListItemClick(ListView parent, View v, int position, long id) {
super.onListItemClick(parent, v, position, id);
Intent intent = new Intent(SangpumlistActivity.this,
EditListActivity.class);
intent.putExtra("id", Long.toString(id));
startActivity(intent);
}
}
이런식인데요.
SangpumlistActivity에서 ListView를 상속받아서
main.xml에 ListView를 참조해주고있는데
main.xml에 두개의 ListView를 사용하려고해요
ListView를 상속받으면 andrid:id값이 무조건 list값이 되어야 한다고들 하던데,
그럼 그냥 ListView를 상속받고
두개의 class에서 하나의 main.xml를 참조할수있나요??
말이 너무 꼬이는데..음
그러니까
Activity1.java , Activirty2.java
main.xml - ListView 1 , ListView 2
이렇게 구성되어있는데
main.xml에서 ListView1 -Activity 1
ListView2 -Activity 2
이런식입니다.
ListView를 상속받고 ,
main.xml에 두개의 리스트뷰를 생성하고
그에따른 java 파일도 두개를 생성하여 연결하는게
되나요?




xml은 하나를 쓰는데 리스트뷰가 2개......
그 리스트뷰는 액티비티마다 따로 사용...
한화면에서 리스트뷰 2개를 쓰신다는 말씀이신가요?
리스트뷰를 컨트롤하는걸 액티비티 관점에서 접근하지 마시고
액티비티는 하나만 사용하여 각 리스트뷰에 대한 별도의 컨트롤러 클래스를 만들어서 사용하시는게 좋을것 같습니다.
이 경우에서는 xml에서 리스트뷰 아이디도 list로 하지 마시고 딴걸로 사용하세요.ListActivity를 상속받는건 별로 추천하지 않습니다.
(한 화면에서 2개의 액티비티를 사용하는 fragment라는게 있긴 합니다만, 2.2에서는 아직 안 되는것 같으므로 논외로 합니다)