public class MainActivity extends Activity {
DBHelper dbHelper;
final static String dbName = "bomb.db";
final static int dbVersion = 5;
TextView getTime, juso;
ArrayList<String> item;
ArrayAdapter<String> adapter;
ListView list;
LocationManager locationManager;
private String provider;
private Context context;
private GpsLocationListener listener = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
juso = (TextView)findViewById(R.id.juso);
dbHelper = new DBHelper(this, dbName, null, dbVersion);
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, item);
final ListView list = (ListView)findViewById(R.id.list);
list.setAdapter(adapter);
list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
list.setOnItemClickListener(mItemClickListener);
findViewById(R.id.delete).setOnClickListener(mClickListener);
loadGps();
getLocation();
}
Button.OnClickListener mClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()) {
case R.id.delete :
int id = list.getCheckedItemPosition();
if(id != list.INVALID_POSITION) {
item.remove(id);
list.clearChoices();
adapter.notifyDataSetChanged();
}
break;
}
}
};
AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
// TODO Auto-generated method stub
String mes = "Select item =" +item.get(position);
Toast.makeText(MainActivity.this, mes, Toast.LENGTH_SHORT).show();
}
};
public void loadGps() {
Log.w("tag", "loadGPS");
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE); // 정확도
criteria.setPowerRequirement(Criteria.POWER_LOW); // 전원 소비량
criteria.setAltitudeRequired(false); // 고도, 높이 값을 얻어 올지를 결정
criteria.setBearingRequired(false);
criteria.setSpeedRequired(false); //속도
criteria.setCostAllowed(true); //위치 정보를 얻어 오는데 들어가는 금전적 비용
provider = locationManager.getBestProvider(criteria, true);
listener = new GpsLocationListener();
locationManager.requestLocationUpdates(provider, 1000, 5, listener);
}
public void mOnClick(View v) {
SQLiteDatabase db;
String sql;
switch(v.getId()) {
case R.id.save :
String timing2 = getTime.getText().toString();
String juso2 = juso.getText().toString();
dbHelper = new DBHelper(this, dbName, null, dbVersion);
db = dbHelper.getWritableDatabase();
sql = String.format("INSERT INTO ksj(timing, juso) VALUES('%s', '%s');", timing2, juso2);
Log.d("tag", sql);
db.execSQL(sql);
Toast.makeText(this, "저장되었습니다.", Toast.LENGTH_SHORT).show();
break;
case R.id.data :
setContentView(R.layout.activity2nd);
ArrayList<String> item = new ArrayList<String>();
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, item);
ListView list = (ListView)findViewById(R.id.list);
list.setAdapter(adapter);
adapter.notifyDataSetChanged();
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 time1 = cursor.getString(1);
Log.d("tag", "cursor.getString1 = "+time1);
String juso1 = cursor.getString(2);
Log.d("tag", "cursor.getString2 =" +juso1);
item.add(time1+"\n"+juso1);
adapter.notifyDataSetChanged();
}
cursor.close();
}
dbHelper.close();
break;
}
}
}
06-10 11:42:41.577: E/AndroidRuntime(789): FATAL EXCEPTION: main
06-10 11:42:41.577: E/AndroidRuntime(789): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gps0610/com.example.gps0610.MainActivity}: java.lang.NullPointerException
06-10 11:42:41.577: E/AndroidRuntime(789): Caused by: java.lang.NullPointerException
06-10 11:42:41.577: E/AndroidRuntime(789): at com.example.gps0610.MainActivity.onCreate(MainActivity.java:57)
57번줄은 위소스상 27번줄인 list.setAdapter(adapter); 입니다.
소스내용은 ListView의 데이터를 체크하여 삭제하는 소스입니다.