DB 검색한 후 ResultList 소스는 아래와 같습니다.
그런데 검색 리스트를 클릭하면 다른 인텐트로 이동할려고 합니다.
단, DB 모든 열의 4번째 Column(Column id=xml)에 intent 가 등록되어 있습니다.
이것을 꺼내어 연결해 줄려고 하는데 어떻게 해야만 할까요?
/*ListView list = (ListView)findViewById(R.id.ListView01);
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
}
});*/
제대로 만든 것도 아닌데 위와 같은 식으로 하니 널포인트 에러가 막 생기고 있습니다.
int arg2에서 포지션 값을 가지고 온다고 하는데 그럼 이 포지션을 어떻게 연결시켜야 하는지요.
구체적인 소스로 말씀해 주시면 감사하겠습니다. 원체 초보라...
도움 좀 부탁드릴께요. 삼일째 헤매고 있습니다. ㅠㅠㅠ
참고로 DB, 검색화면, 결과화면을 이미지로 첨부하니 참고하세요.
=================================================================================
Search.java : 검색 화면
=================================================================================
public class Search_Area extends Activity implements OnClickListener{
DBHandler dbHandler;
EditText edtName;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.about);
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(this);
edtName = (EditText)findViewById(R.id.Text);
ArrayList<String> arArea = new ArrayList<String>();
arArea.add("경기도");
arArea.add("강원도");
...................................
ArrayAdapter<String> Adapter;
Adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, arArea);
ListView list = (ListView)findViewById(R.id.list);
list.setAdapter(Adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch(position) {
case 0:
Intent a= new Intent(Search_Area.this, kg.class);
startActivity(a);
break;
case 1:
Intent b= new Intent(Search_Area.this, kw.class);
startActivity(b);
break;
case 2:
Intent c= new Intent(Search_Area.this, cc.class);
startActivity(c);
break;
case 3:
Intent d= new Intent(Search_Area.this, ccn.class);
startActivity(d);
break;
..............................
}
}
});
}
public void onClick(View v) {
try {
dbHandler = DBHandler.open(this);
if(v.getId() == R.id.button){
Intent intent = new Intent(this, ResultList.class);
intent.putExtra("command", "selectname");
intent.putExtra("name", edtName.getText().toString());
startActivity(intent);
}
dbHandler.close();
} catch (Exception e) {
Log.i("disp", "err : " + e);
}
}
}
=================================================================================
ResultList.java : 결과 화면
=================================================================================
public class ResultList extends ListActivity{
DBHandler dbHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dbHandler = DBHandler.open(this);
Intent intent = getIntent();
String command = (String)intent.getExtras().get("command");
Cursor cursor = null;
if(command.equals("selectname")){
String name = (String)intent.getExtras().get("name");
cursor = dbHandler.selectName(name);
}
String[] arr = new String[cursor.getCount()];
int count = 0;
while(cursor.moveToNext()){
int id = cursor.getInt(0);
String state = cursor.getString(1);
String city = cursor.getString(2);
String food = cursor.getString(3);
arr[count] = id + " " + state + " : " + city + " : " + food;
count++;
}
cursor.close();
dbHandler.close();
ListAdapter adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, arr);
setListAdapter(adapter);
/*ListView list = (ListView)findViewById(R.id.ListView01);
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
}
});*/
}
}
=================================================================================
DBHelper.java
=================================================================================
public class DBHelper extends SQLiteOpenHelper{
private static final String DB_NAME = "food.sqlite";
private static final int DB_VER = 1;
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VER);
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exist SFOOD");
onCreate(db);
}
}
=================================================================================
DBHandler.java
=================================================================================
public class DBHandler {
private Context ctx;
private DBHelper helper;
private SQLiteDatabase db;
public DBHandler(Context ctx) {
this.ctx = ctx;
helper = new DBHelper(ctx);
db = helper.getWritableDatabase(); }
public static DBHandler open(Context ctx) throws SQLException{
DBHandler handler = new DBHandler(ctx);
return handler;
}
public void close(){
helper.close();
}
public Cursor selectName(String food){
String sql="select * from SFOOD where food like ?";
Cursor cursor = db.rawQuery(sql, new String[]{food + "%"});
return cursor;
}
}