
우선 이전 액티비티에서 버튼을 클릭하면 현재 시간과 날짜를 읽어옵니다.(화면엔 나오지는 않지만 gps수신하여 현재위치도 수신합니다.) 위의 두값(현재시간과날짜, 현재위치)을 intent로 넘겨서 밑에 소스의 액티비티로 넘겨줍니다.
그 값을 받은 데이터를 나타낸 DB 그림입니다.
간신히 db에 넣는것은 성공은 했습니다만.
이걸 Listview에 뿌리질 못하겠네요.
현재는 가장 최신 데이터만 화면에 나타나고
나머지 데이터는 그냥 db에 저장되어 있을뿐입니다. 누적되어 밑으로 쭉 나열하고 싶습니다.
SELECT문을 이용하라고 하셔서 안간힘으로 하고있는데요.
자바 구조를 거의 몰라서요,.62번줄은 노랑색으로 하이라이트 해놨습니다.
public class dbActivity extends Activity {
ArrayList<String> item;
ArrayAdapter<String> adapter;
ListView list;
TextView data;
Context context;
DBHelper dbHelper;
final static String dbname = "jyu.db";
final static int dbVersion = 100;
SQLiteDatabase db;
String sql;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity2nd);
// TODO Auto-generated method stub
final Intent intent = getIntent();
String time = intent.getExtras().getString("time").toString();
String juso = intent.getExtras().getString("local").toString();
item = new ArrayList<String>();
item.add(time+juso);
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, item);
//getListView().setTextFilterEnabled(true);
//리스트액티비티의 아이디 찾는 방법은 다르다.
list = (ListView)findViewById(R.id.list);
list.setAdapter(adapter);
adapter.notifyDataSetChanged();
//db에 저장
dbHelper = new DBHelper(this, dbname, null, dbVersion);
db = dbHelper.getWritableDatabase();
sql=String.format("INSERT INTO ksj(time,juso) VALUES('%s', '%s');", time, juso);
Log.d("tag", sql);
db.execSQL(sql);
final Button seeButton = (Button)findViewById(R.id.see);
seeButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
Log.d("DATA", "Search data");
db = dbHelper.getReadableDatabase();
sql = "SELECT*FROM ksj;";
Cursor cursor = db.rawQuery(sql, null);
if(cursor.getCount() > 0) {
while(cursor.moveToNext()){
String time = cursor.getString(0);
Log.d("tag", "cursor.getString1 = "+time);
String juso = cursor.getString(1);
Log.d("tag", "cursor.getString2 =" +juso);
item.add(time+juso);
adapter.notifyDataSetChanged();
}
}
cursor.close();
}
});
dbHelper.close();
}
public class DBHelper extends SQLiteOpenHelper {
//생성자
public DBHelper(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
//최초 DB를 만들때 한번만 호출된다.
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE ksj(_id INTEGER PRIMARY KEY AUTOINCREMENT,"+ "time String not null, juso TEXT not null);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS ksj");
onCreate(db);
}
}
}
06-05 06:02:43.981: E/AndroidRuntime(1103): FATAL EXCEPTION: main
06-05 06:02:43.981: E/AndroidRuntime(1103): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gps0528/com.example.gps0528.dbActivity}: java.lang.NullPointerException
06-05 06:02:43.981: E/AndroidRuntime(1103): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
06-05 06:02:43.981: E/AndroidRuntime(1103): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
06-05 06:02:43.981: E/AndroidRuntime(1103): at android.app.ActivityThread.access$600(ActivityThread.java:123)
06-05 06:02:43.981: E/AndroidRuntime(1103): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
06-05 06:02:43.981: E/AndroidRuntime(1103): at android.os.Handler.dispatchMessage(Handler.java:99)
06-05 06:02:43.981: E/AndroidRuntime(1103): at android.os.Looper.loop(Looper.java:137)
06-05 06:02:43.981: E/AndroidRuntime(1103): at android.app.ActivityThread.main(ActivityThread.java:4424)
06-05 06:02:43.981: E/AndroidRuntime(1103): at java.lang.reflect.Method.invokeNative(Native Method)
06-05 06:02:43.981: E/AndroidRuntime(1103): at java.lang.reflect.Method.invoke(Method.java:511)
06-05 06:02:43.981: E/AndroidRuntime(1103): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-05 06:02:43.981: E/AndroidRuntime(1103): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-05 06:02:43.981: E/AndroidRuntime(1103): at dalvik.system.NativeStart.main(Native Method)
06-05 06:02:43.981: E/AndroidRuntime(1103): Caused by: java.lang.NullPointerException
06-05 06:02:43.981: E/AndroidRuntime(1103): at com.example.gps0528.dbActivity.onCreate(dbActivity.java:62)
06-05 06:02:43.981: E/AndroidRuntime(1103): at android.app.Activity.performCreate(Activity.java:4465)
06-05 06:02:43.981: E/AndroidRuntime(1103): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
06-05 06:02:43.981: E/AndroidRuntime(1103): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)