回答
我開始改變你的適配器一個CursorAdapter但坦率地說這將是相同的,因爲這SimpleCursorAdapter例子(我更新,以反映你的代碼,盡我所能。):
public class Example extends Activity {
SimpleCursorAdapter adapter;
Database database;
ListView listView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
database = new Database(this);
database.open();
// See my note below for a detailed explanation of this
Cursor cursor = database.getAllNames();
adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_checked,
cursor,
new String[] { "name" }, // "name" is the column in your database that I describe below
new int[] {android.R.id.text1}, 0);
listView = (ListView) findViewById(R.id.list);
listView.setAdapter(adapter);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
Button delete = (Button) findViewById(R.id.delete_button);
delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
long[] checkedIds = listView.getCheckedItemIds();
for(long id : checkedIds)
database.deleteName(id);
listView.clearChoices();
adapter.changeCursor(database.getAllNames());
}
});
}
@Override
protected void onDestroy() {
database.close();
super.onDestroy();
}
}
好了,你的所有需求使這項工作是一種方法,它將返回一個Cursor與您的數據庫類中的所有名稱(我稱之爲getAllNames()
)。現在我假設您的表格模式如下所示:
CREATE TABLE Names (
_id INTEGER PRIMARY KEY,
names TEXT);
您可以相應地進行調整。你Database.getAllNames()
方法應該使用這樣的查詢:
"SELECT _id, name FROM Names;"
或者,如果你想要的名稱的字母順序排列:
"SELECT _id, name FROM Names ORDER BY name;"
總之它看起來像:
public Cursor getAllNames() {
return NameDatabase.rawQuery("SELECT _id, name FROM Names ORDER BY name;", null);
}
我希望解釋一些事情,老實說,這是做你想做的最簡單的方法。
加上你自己的行(列表項)佈局
添加自己的佈局是很簡單的。既然你喜歡simple_list_item_checked.xml的外觀,讓我們將它複製的佈局和調整它爲你的顏色:
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:checkMark="?android:attr/textCheckMark"
android:gravity="center_vertical"
android:paddingLeft="6dip"
android:paddingRight="6dip"
android:textAppearance="?android:attr/textAppearanceLarge" />
所有你需要補充的是:
android:background="#ffffffff"
android:textColor="#ff000000"
(請注意,由於只有一個元素一個ViewGroup是沒有必要的;沒有LinearLayout,沒有RelativeLayout等。另外"@android:id/text1"
是我們在SimpleCursorAdapter android.R.id.text1中引用的id,當你改變佈局時需要適當地改變它們。)
但是如果你只想反轉顏色考慮使用不同的主題爲你整個應用程序。打開你的清單,並添加這個主題:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light" >
默認情況下,Android使用Theme.Dark,只需將其更改爲Theme.Light。現在每個項目默認都有白色背景和黑色文本!
小的調整getView()
以供將來參考,在適配器中的getView()調用getLayoutInflater()爲每一個新行。您只需在構造函數中獲取一次LayoutInflater並將其保存在一個變量中,可能爲LayoutInflater mLayoutInflater
,然後在mLayoutInflater.inflate(...)
的getView()中使用它。
希望有幫助!
我正在使用CustomAdapter。我將它添加到我的第一篇文章中。 – user1617102
我看到你實際上擴展了一個ArrayAdapter,它不像CursorAdapter那樣保留SQLite ID。 (這是你之前看到的。)讓我們改變它來擴展一個CursorAdapter。 **還**你使用getView()和ViewHolder()_perfectly_。 (Upvote就是爲此。) – Sam
Heya,現在刪除作品和ListView也起作用。感謝您向我展示SimpleCursorAdapter的魔力。 :)現在只有一個小問題。 CursorAdapter使用標準佈局(android.R.layout.simple_list_item_checked),我無法用我的行佈局替換它。我的意思是這不會成爲問題,因爲這個標準看起來也很棒。但文本的顏色似乎是(Alpha = 0),我的意思是它是隱形的,直到我點擊它。然後textcolor變黑。你有任何想法如何解決這個問題? – user1617102
- 1. 刪除listview和sqlite的行
- 2. 使用SQLite從ListView中刪除視圖
- 3. 刪除行使用的ListView
- 4. 更新和刪除ListView中的SQLite行
- 5. 刪除使用SQLite
- 6. 用RecyclerView刪除SQLite行
- 7. appcelerator刪除listview行?
- 8. 使用ContextMenu刪除特定的行sqlite
- 9. 使用列表視圖刪除sqlite行
- 10. Sqlite行不刪除
- 11. 刪除SQLITE行UITABLEVIEW
- 12. 從SQLite和listView刪除一個項目
- 13. Android:從SQLite表中刪除一行並更新ListView
- 14. 刪除行後刷新ListView
- 15. 在ListVIew中刪除多行
- 16. 跳過刪除/空行sqlite
- 17. 錯誤刪除SQlite的行
- 18. 在SQLite中刪除行3
- 19. 在Android SQLite刪除行
- 20. 在sqlite中刪除一行
- 21. SQLite按日期刪除行
- 22. 刪除用AsyncTaskLoader連接的一行ListView
- 23. 如何在ListView中使用SimpleCursorAdapter刪除行使用按鈕
- 24. 當刪除最後一個引用時SQLite刪除共享行
- 25. 刪除SQLiteDB ListView
- 26. SQLite刪除慢
- 27. SQlite「刪除單行」「並刪除所有行」代碼不工作
- 28. 在sqlite表中執行刪除行
- 29. 使用Async Class刪除Listview項目?
- 30. 使用BaseAdapter刪除ListView中的項目
有幾種方法可以做到這一點。 (我將從最簡單的開始。)你的行佈局是什麼樣的? – Sam
我使用'long'值來刪除行。我將代碼添加到了我的第一篇文章中。 – user1617102
我在問你在ListView中使用的XML佈局,這是什麼佈局? (如果您使用ListView的多項選擇功能,這非常簡單!) – Sam