마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

db리스트 갱신하는 방법을 알고싶습니다.

0 추천

 

 

 

 

 

우선 이전 액티비티에서 버튼을 클릭하면 현재 시간과 날짜를 읽어옵니다.(화면엔 나오지는 않지만 gps수신하여 현재위치도 수신합니다.) 위의 두값(현재시간과날짜, 현재위치)을 intent로 넘겨서 밑에 소스의 액티비티로 넘겨줍니다.

그 값을 받은 데이터를 나타낸 DB 그림입니다.

 

간신히 db에 넣는것은 성공은 했습니다만.

이걸 Listview에 뿌리질 못하겠네요.

현재는 가장 최신 데이터만 화면에 나타나고

나머지 데이터는 그냥 db에 저장되어 있을뿐입니다.  누적되어 밑으로 쭉 나열하고 싶습니다.

소스 수정 좀 부탁드립니다. 퇴근하고 싶습니다.ㅠ

 

package com.example.gps0528;

import java.util.ArrayList;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.CursorAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class dbActivity extends ListActivity {
 
   ArrayList<String> item;
   ArrayAdapter<String> adapter;
   ListView listo;
   TextView data;
 
   Context context;
      DBHelper dbHelper;
  
   final static String dbname = "Terbo.db";
   final static int dbVersion = 4;
  
   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    
    
    
    
     Intent intent = getIntent();
    
     String time = intent.getExtras().getString("time").toString();
     String juso = intent.getExtras().getString("local").toString();
     //TextView data = (TextView)findViewById(R.id.KKK);
     //data.setText(time+" "+juso);
    
  
     //db에 저장
    dbHelper = new DBHelper(this, dbname, null, dbVersion);
    db = dbHelper.getWritableDatabase();
    sql=String.format("INSERT INTO turbo(time,juso) VALUES('%s', '%s');", time, juso);
          Log.d("tag", sql);
    //sql=String.format("INSERT INTO friend VALUES('%s', '%s')", time, juso);
    db.execSQL(sql);
    //item.add(item);
    //item.add(time+juso);
    
    //dbHelper.close();
    
    
     item = new ArrayList<String>();
     //item.add(data.getText().toString());
     //item.add(intent.getExtras().getString("time").toString()+intent.getExtras().getString("local").toString());
     item.add(time+juso);
    
     //dbHelper = new DBHelper(this, dbname, null, dbVersion);
     //SQLiteDatabase db;
    
     //String sql;
    
     //db = dbHelper.getWritableDatabase();
     //sql = String.format("INSERT INTO dbname VALUES(null, '&s', '&s');", time, juso);
     //db.execSQL(sql);
    
     adapter = new ArrayAdapter<String>(this,
          android.R.layout.simple_list_item_multiple_choice, item);
     getListView().setTextFilterEnabled(true);
    
     //리스트액티비티의 아이디 찾는 방법은 다르다.
     listo = (ListView)findViewById(android.R.id.list);
  listo.setAdapter(adapter); 
  
  //adapter.notifyDataSetChanged();
  
  //CursorAdapter adaper = (CursorAdapter)getListAdapter();
  //adapter.getCursor().requery();
  adapter.notifyDataSetChanged();
 }   
 

 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 turbo(_id INTEGER PRIMARY KEY AUTOINCREMENT,"+ "time INTEGER 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 turbo");
   onCreate(db);
  }  
 }
}

 

 

앤드류이드 (6,190 포인트) 님이 2013년 6월 4일 질문
앤드류이드님이 2013년 6월 4일 수정

2개의 답변

0 추천
1. db에 query를 보내서 저장되어 있는 데이터셋을 받아오고

 

2. 받아온 데이터셋으로 adapter를 새로 생성하세요
마플 (3,720 포인트) 님이 2013년 6월 5일 답변
제가 안드로이드 거의 문맹수준이라 소스랑 소스가 들어갈 위치 좀 알려주시면 아니될까요??
0 추천

물고기를 잡는 법을 알려드리지 않고 매번 잡아드리면

앞으로도 계속 잡지 못하게 됩니다..

질문글 찬찬히 잘 읽다가 "소스 수정 좀 부탁드립니다" 부분에서 확 내려버리게 되네요 ;;;

질문에 대한 답변을 드리자면

DB 에 저장된 내용을 가져와서 (Select) 리스트에 뿌려주는 코드가 없으니 나오지 않는것입니다.

 

현재 코드 :  item.add(time+juso)

대체할 코드 : DB Select 후 가져온 갯수만큼 add

 

그리고 추후 확장성을 위해서라도 ListActivity 를 상속받는 현재구조는 추천하고싶지 않습니다.

블랙넥원 (9,600 포인트) 님이 2013년 6월 5일 답변
블랙넥원님 말씀이 100퍼 맞습니다. ^^제가 안드로이드를 전문하는게 아니라서요. 저흰 광레이저 R&D회사인데 이번에 안드로이드로 USB통신하는 걸 하나 개발 중이라 . 급하게 기초도 없이 진행해서 그렇습니다. 이해해주세요.
자바 기초부터 배워서 하면 좋겠지만. 시간적 여유도 없고 안드로이드를 기본으로 하는 직종이 아니라서요.
암튼 답변 감사드려요^^
...