안드로이드 개발 질문/답변
(글 수 45,052)
자바파일
BestFood_20110127Activity.java
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
package com.jangan.BestFood_20110127;import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;public class BestFood_20110127Activity extends ListActivity {
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.areaselect);
ListAdapter adapter;
adapter = ArrayAdapter.createFromResource(this, R.array.area_list, android.R.layout.simple_list_item_single_choice);
setListAdapter(adapter);
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
}
@Override
protected void onListItemClick(ListView lv, View v, int position, long id){
String localName = (String) lv.getItemAtPosition(position);
Intent intent = new Intent(this, MapOverlayView.class);
intent.putExtra("area", localName);
startActivity(intent);
}}
MapOverlayView .java
package com.jangan.BestFood_20110127;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;import android.content.Intent;
import android.content.res.AssetManager;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;public class MapOverlayView extends MapActivity{
private MapView mView;
private MapController mControl;
@Override
protected void onCreate(Bundle saveInstanceState){
super.onCreate(saveInstanceState);
setContentView(R.layout.mapview);
mView = (MapView) findViewById(R.id.mapview1);
mView.setBuiltInZoomControls(true);
mControl = mView.getController();
mControl.setZoom(17);
Drawable marker = this.getResources().getDrawable(R.drawable.pin);
MyOverlay myOverlay = new MyOverlay(marker,this);
List<Overlay> mapOverlays = mView.getOverlays();
mapOverlays.add(myOverlay);
Intent intent = getIntent();
String address = intent.getStringExtra("area");
String path = "data/data/com.jangan.BestFood_20110127";
File folder = new File(path + "/databases");
folder.mkdirs();
File outfile = new File(folder.getPath().toString() + "/BestFoodHouse");
AssetManager assetManager = this.getResources().getAssets();
try{
InputStream is = assetManager.open("BestFoodHouse", AssetManager.ACCESS_BUFFER);
long filesize = is.available();
System.out.println("db:" + filesize +" as:" + outfile.length());
if (outfile.length() != filesize){
byte [] tempdata = new byte[(int)filesize];
is.read(tempdata);
is.close();
outfile.createNewFile();
FileOutputStream fo = new FileOutputStream(outfile);
fo.write(tempdata);
fo.close();
}
} catch (IOException e){Log.i("e", e.getMessage());}
SQLiteDatabase bfDB;
bfDB = this.openOrCreateDatabase("BestFoodHouse", MODE_PRIVATE, null);
Cursor record = bfDB.query("house_list", null, "Address='" + address + "'", null, null, null, null);
if(record != null){
if(record.getCount() == 0){
Toast.makeText(this, "맛집이 등록되어 있지 않습니다", Toast.LENGTH_LONG).show();
return;
} while(record.moveToNext()) {
double dLat = Double.parseDouble(record.getString(2));
double dLon = Double.parseDouble(record.getString(3));
int lat = (int)(dLat * 1000000);
int lon = (int)(dLon * 1000000);
GeoPoint geoPoint = new GeoPoint(lat, lon);
OverlayItem item = new OverlayItem(geoPoint,
"이름: " + record.getString(1),
"전화: " + record.getString(5) + "\n" +
"메뉴: " + record.getString(6));
myOverlay.addItem(item);
if(record.isFirst()){
mControl.animateTo(geoPoint);
}
}
} else {
Toast.makeText(this, "DB를 열지 못했습니다", Toast.LENGTH_LONG).show();
}
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}}
---------------------------------------------------------------
MyOverlay.java
---------------------------------------------------------------
package com.jangan.BestFood_20110127; import java.util.ArrayList;import android.content.Context;
import android.graphics.drawable.Drawable;
import android.widget.Toast;import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;public class MyOverlay extends ItemizedOverlay<OverlayItem>{
private ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
private Context mContext;
public MyOverlay(Drawable defaultMarker){
super(boundCenterBottom(defaultMarker));
}
public MyOverlay(Drawable defaultMarker, Context context) {
super(boundCenterBottom(defaultMarker));
mContext = context;
}
@Override
protected OverlayItem createItem(int i) {
return items.get(i);
}
@Override
public int size() {
return items.size();
}
public void addItem(OverlayItem item){
items.add(item);
populate();
}
protected boolean onTap(int index) {
OverlayItem item = items.get(index);
String msg = item.getTitle() + "\n" + item.getSnippet();
Toast.makeText(mContext, msg, Toast.LENGTH_LONG).show();
return true;
}
}
-------------------------------------------------
로그캣 에러부분만 캡쳐했습니다
-------------------------------------------------




값을 가져오려하는데 값이 없어서 널포인트 떨어지는거 같은데용