디비에서 목록을 호출해서 클릭가능한 목록을 textview 위에 구성한다음에
클릭하면 핸들러가 실행되게끔 하고 싶은데 에러가 나네요 ㅎㅎ
한번 봐주시면 감사하겠습니다~~~
package org.example.map4;
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.AdapterView;
import java.util.ArrayList;
import java.util.Date;
import android.content.SharedPreferences;
import android.database.Cursor;
public class tracklist extends Activity {
private ArrayList<String> trackListArray; // tracklist declare
private ListView myListView; //list view declare
ArrayAdapter<String> myAdapterInstance; //array adapter declare
tracklistdb TrackListdb; //DB declare
private Cursor PositionCursor; // db Cursur declare
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
// Inflate your view
setContentView(R.layout.tracklist);
// Get references to UI widgets
myListView = (ListView)findViewById(R.id.myListView);
TrackListdb = new tracklistdb(this);
// Open or create the database
TrackListdb.open();
PositionCursor = TrackListdb.getall();
startManagingCursor(PositionCursor);
System.out.println("Num of row(tracklist) :"+ PositionCursor.getCount());
//ositionCursor.close();
trackListArray = new ArrayList<String>();
//mItemList = new ArrayList<OverlayItem>();
int size = PositionCursor.getCount();
if (PositionCursor.moveToFirst())
do {
String name = PositionCursor.getString(TrackListdb.TRACK_NAME_COLUMN);
trackListArray.add(name);
} while(PositionCursor.moveToNext());
int resID = R.layout.todolist_item;
myAdapterInstance = new ArrayAdapter<String> (this, resID, trackListArray);
myListView.setAdapter(myAdapterInstance);
registerForContextMenu(myListView);
}
}
DB class >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..
package org.example.map4;
import java.util.Date;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.util.Log;
/** Database Adapter for persisting Todo Items */
public class tracklistdb {
private static final String DATABASE_NAME = "tracklist.db";
private static final String DATABASE_TABLE = "tracklist";
private static final int DATABASE_VERSION = 1;
public static final String KEY_PN = "pn";
public static final String TRACK_NAME = "track_name";
public static final int PN_COLUMN = 0;
public static final int TRACK_NAME_COLUMN = 1;
private SQLiteDatabase db;
private final Context context;
private tracklistdbOpenHelper dbHelper;
/** SQL Statement to create a new database */
private static final String DATABASE_CREATE = "create table " +
DATABASE_TABLE + " (" + KEY_PN + " integer primary key autoincrement, "
+ TRACK_NAME +" text); ";
public tracklistdb(Context _context) {
context = _context;
dbHelper = new tracklistdbOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
}
/** Open the database */
public void open() throws SQLiteException {
try {
db = dbHelper.getWritableDatabase();
}
catch (SQLiteException ex) {
db = dbHelper.getReadableDatabase();
}
}
/** Close the database */
public void close() {
db.close();
}
public Cursor getall() {
return db.query(DATABASE_TABLE, new String[] { KEY_PN, TRACK_NAME}, null, null, null, null, null);
}
public Cursor getTrack(String trackName) {
String where = TRACK_NAME + "= '" + trackName+ "'";
return db.query(DATABASE_TABLE, new String[] { KEY_PN, TRACK_NAME}, where, null, null, null, null);
}
public void delete() {
System.out.println("deleteTable");
db.execSQL("DELETE FROM" + DATABASE_TABLE);
// db.delete(DATABASE_TABLE,null,null);
}
public void removeall() {
db.delete(DATABASE_TABLE,null,null);
}
/** Insert a new task */
public long insertTrackName(String trackname) {
// Create a new row of values to insert.
ContentValues newPositionValues = new ContentValues();
// Assign values for each row.
newPositionValues.put(TRACK_NAME, trackname);
return db.insert(DATABASE_TABLE, null, newPositionValues);
}
/** Remove a task based on its index */
public void removeTask(long _rowIndex) {
db.delete(DATABASE_TABLE, KEY_PN + "=" + _rowIndex, null);
return ;
}
/** Static Helper class for creating, upgrading, and opening
* the database.
*/
private static class tracklistdbOpenHelper extends SQLiteOpenHelper {
public tracklistdbOpenHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase _db) {
_db.execSQL(DATABASE_CREATE);
System.out.println("db_created>>>>>>>>>>>>>>>>");
}
@Override
public void onUpgrade(SQLiteDatabase _db, int _oldVersion, int _newVersion) {
Log.w("POSITIONDBAdapter", "Upgrading from version " +
_oldVersion + " to " +
_newVersion + ", which will destroy all old data");
// Drop the old table.
_db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
// Create a new one.
onCreate(_db);
}
}
}
Error >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
11-03 00:15:44.925: ERROR/ArrayAdapter(2816): You must supply a resource ID for a TextView
11-03 00:15:44.925: DEBUG/AndroidRuntime(2816): Shutting down VM
11-03 00:15:44.925: WARN/dalvikvm(2816): threadid=3: thread exiting with uncaught exception (group=0x4000fe70)
11-03 00:15:44.935: ERROR/AndroidRuntime(2816): Uncaught handler: thread main exiting due to uncaught exception
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:347)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.widget.AbsListView.obtainView(AbsListView.java:1269)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.widget.ListView.measureHeightOfChildren(ListView.java:1117)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.widget.ListView.onMeasure(ListView.java:1030)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.view.View.measure(View.java:7115)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.widget.LinearLayout.measureVertical(LinearLayout.java:350)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.view.View.measure(View.java:7115)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.view.View.measure(View.java:7115)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.widget.LinearLayout.measureVertical(LinearLayout.java:464)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.view.View.measure(View.java:7115)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2875)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.view.View.measure(View.java:7115)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.view.ViewRoot.performTraversals(ViewRoot.java:698)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.view.ViewRoot.handleMessage(ViewRoot.java:1482)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.os.Handler.dispatchMessage(Handler.java:99)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.os.Looper.loop(Looper.java:123)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.app.ActivityThread.main(ActivityThread.java:3948)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at java.lang.reflect.Method.invokeNative(Native Method)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at java.lang.reflect.Method.invoke(Method.java:521)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at dalvik.system.NativeStart.main(Native Method)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): Caused by: java.lang.ClassCastException: android.widget.RelativeLayout
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:340)
11-03 00:15:44.955: ERROR/AndroidRuntime(2816): ... 29 more