私はまだAndroidとEclipseの新機能ですが、そのタイトルはほとんどすべてです。私はリストビューを持っている私はDBの行から移入した。選択したリストビューアイテムを取得し、ボタンがクリックされたときにDBから行を削除し、これが完了したらListViewをリフレッシュします。これまでのところ、私のコードはリストに値を設定しています。どんな助けでも大歓迎です。 OKDBにデータが保存されています。リストビューの削除はボタンのボタンでクリックしてください。
public class ViewListingsActivity extends Activity implements OnClickListener {
SQLiteDatabase db;
ListView listview;
Button button;
SimpleCursorAdapter adapter;
String value;
private static final String TAG = DBHelper.class.getSimpleName();
public static final String DB_ADDRESS = BaseColumns._ID;
public static final String DB_DESCRIPTION = "Description";
public static final String DB_URL = "URL";
final String dbTable = "Realtor_SMS_Table";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewlisting);
listview = (ListView) findViewById(R.id.list);
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(this);
DBHelper dbhelper = new DBHelper(ViewListingsActivity.this);
db = dbhelper.getWritableDatabase();
Cursor cursor = db.query(dbTable, null, null, null, null, null, null);
startManagingCursor(cursor);
String[] from = new String[] { DB_ADDRESS, DB_DESCRIPTION, DB_URL };
int[] to = new int[] { R.id.textlistaddress, R.id.textlistdescription,
R.id.textlisturl };
adapter = new SimpleCursorAdapter(this, R.layout.rowlist, cursor, from,
to);
listview.setAdapter(adapter);
listview.setChoiceMode(1);
}
public void onClick(View arg0) {
db.delete(dbTable, "_id=" + value, null);
adapter.notifyDataSetChanged();
Log.d("wtf", "deleted: " + value);
}
}
、ここに私の新しく編集されたコードは次のとおりです。
public class ViewListingsActivity extends Activity implements OnClickListener {
SQLiteDatabase db;
ListView listview;
Button button;
SimpleCursorAdapter adapter;
String value;
OnItemClickListener listener;
Cursor newcursor;
String deleteinfo;
private static final String TAG = DBHelper.class.getSimpleName();
public static final String DB_ADDRESS = BaseColumns._ID;
public static final String DB_DESCRIPTION = "Description";
public static final String DB_URL = "URL";
final String dbTable = "Realtor_SMS_Table";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewlisting);
listview = (ListView) findViewById(R.id.list);
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(this);
DBHelper dbhelper = new DBHelper(ViewListingsActivity.this);
db = dbhelper.getWritableDatabase();
Cursor cursor = db.query(dbTable, null, null, null, null, null, null);
startManagingCursor(cursor);
String[] from = new String[] { DB_ADDRESS, DB_DESCRIPTION, DB_URL };
int[] to = new int[] { R.id.textlistaddress, R.id.textlistdescription,
R.id.textlisturl };
adapter = new SimpleCursorAdapter(this, R.layout.rowlist, cursor, from,
to);
listview.setAdapter(adapter);
listview.setChoiceMode(1);
listview.setOnItemClickListener(listener);
}
public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
newcursor = ((SimpleCursorAdapter)listview.getAdapter()).getCursor();
deleteinfo = newcursor.getString(1);//getString(0);
}
public void onClick(View arg0) {
db.delete(dbTable, "_id=" + deleteinfo, null);
adapter.notifyDataSetChanged();
Log.d("wtf", "deleted: " + deleteinfo);
}
}
私deleteinfo文字列は、なぜそれが適切な列の値を取得していない、nullを返し続けますか?
は一種の単一の質問形式で複数の質問をする質問/回答スキーマはそれがありません敗北:Adapter.onItemClickListener | Android Developers
参照してください。この位置は、カーソルが行を指してつかむために使用することができますか?それにもかかわらず、onItemClickのgetCursor()を呼び出さないでください - 私の編集で私のコードをもっと詳しく見てください。 –
申し訳ありませんが、あなたは完全に正しいです。とにかく、私はそれを理解した。あなたたち最高!! – Ryan