사이트에있는

류종택님의 동영상 강좌 #3 -DB다루기 기초를 공부하고 있습니다.

 

공부하는 소스는 EditText 에서 값 입력 후  키보드 enter키를 쳐서 db(SQLite)에 값을 넣고 ListView에 목록이 뜨고 갱신되는 소스입니다.

 

ListView에 뜬 목록들을 마우스로 클릭시 intent를 통하여 다른 화면으로 가서 수정,지우기 기능 등등을 추가하려고 생각 중이였습니다.

 

그래서 클릭이벤트를 구현하였지만 해당 목록의 (SN)값은 불러오지 못하고 있습니다.ㅠㅠ

 

수정하려는 목록을 클릭하여 다른 화면으로 넘어갈때 인텐트를 통하여 선택한 글의 정보가 담긴(SN)를 같이 넘겨 구분하려합니다.

이렇게 하는게 맞나요?

 

조그마한 힌트라도 주시면 감사하겠습니다^^ 그럼 수고하세요.

 

=====================================

Main.java

=====================================

Main.java
 package ryu.beginner;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class Main extends Activity {
    /** Called when the activity is first created. */
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        _TodoList = new TodoList(this);
        
        _edTitle = (EditText) findViewById(R.id.edTitle);
        _edTitle.setOnKeyListener(on_KeyEvent);  
        
        _ListView = (ListView) findViewById(R.id.ListView);
        _ListView.setAdapter(_TodoList.Adapter); 
       
 // 리스트 클릭 이벤트 
        _ListView.setOnItemClickListener(new AdapterView.OnItemClickListener()  {
         public void onItemClick(AdapterView<?> parent, View v, int position, long id) {                   
          
          Toast.makeText(Main.this, "123", 1000).show();           
   }  
  });
        
    }    
    private TodoList _TodoList = null;    
    private EditText _edTitle = null;
    private ListView _ListView = null;
    
    private View.OnKeyListener on_KeyEvent = new View.OnKeyListener() {
  public boolean onKey(View v, int keyCode, KeyEvent event) {
   if (event.getAction() == KeyEvent.ACTION_DOWN) {
    if (keyCode == KeyEvent.KEYCODE_ENTER) {
     _TodoList.Append(_edTitle.getText().toString());
     _edTitle.setText("");
     
     return true;
    }
   }
   return false;
  } 
 };
}
 


 

======================================

TodoList.java

======================================

TodoList.java
 
package ryu.beginner;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.SimpleAdapter;
public class TodoList {
 
 public TodoList(Activity AActivity) {
  super();
  
  _Activity = AActivity;
  _DB = _Activity.openOrCreateDatabase("TodoList", _Activity.MODE_PRIVATE, null);
        _DB.execSQL("CREATE TABLE IF NOT EXISTS TodoList (SN integer Primary Key AutoIncrement, Title varchar)");
  
//  TodoList = new ArrayAdapter<String>(_Activity, android.R.layout.simple_list_item_2, _TodoList);
        Adapter = new SimpleAdapter(
          _Activity, _TodoList, android.R.layout.simple_list_item_2, 
    new String[] { "SN", "Title" },
    new int[] { android.R.id.text1, android.R.id.text2 }  
        );
        
  Refresh();
 }
 
 private ArrayList<HashMap<String,String>> _TodoList = new ArrayList<HashMap<String,String>>(); 
 public BaseAdapter Adapter = null;
 
 public void Refresh() {
  _TodoList.clear();
  
  Cursor _Cursor = _DB.rawQuery("Select * from TodoList", null);
  if (_Cursor.moveToFirst()) {
   do {
    HashMap<String,String> _Item = new HashMap<String,String>();
    _Item.put("SN", _Cursor.getString(0));
    _Item.put("Title", _Cursor.getString(1));
    
    _TodoList.add(_Item);
   } while (_Cursor.moveToNext());  
   
   Adapter.notifyDataSetChanged();
  }
 }
 
 public void Append(String ATitle) {
  _DB.execSQL("Insert into TodoList (Title) values ('"+ ATitle +"')");
  HashMap<String,String> _Item = new HashMap<String,String>();
  _Item.put("SN", Integer.toString(getLastRowID()));
  _Item.put("Title", ATitle);
  _TodoList.add(_Item);
  Adapter.notifyDataSetChanged();
 }
 
 public int getLastRowID() {
  Cursor _Cursor = _DB.rawQuery("Select last_insert_rowid() from TodoList", null);
  if (_Cursor.moveToFirst()) {
   return _Cursor.getInt(0);
  } else {
   return -1;
  }
 }
 private Activity _Activity = null;
 private SQLiteDatabase _DB = null;
}


 

===================================

main.xml

===================================

 

main.xml
 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 <EditText android:layout_width="fill_parent" android:id="@+id/edTitle"
  android:layout_height="wrap_content" android:text=""
  android:hint="입력하세요~"></EditText>
 <ListView android:id="@+id/ListView" android:layout_width="fill_parent"
  android:layout_height="wrap_content"></ListView>
</LinearLayout>


공지사항을 다 읽었음