Tôi đang lập trình một ứng dụng Android nên sử dụng cơ sở dữ liệu để lưu trữ dữ liệu và đọc từ đó. Sử dụng this tutorial (on archive.org) Tôi đã nhận ứng dụng để tạo cơ sở dữ liệu và tôi có thể tạo các mục mới, tuy nhiên, tôi không biết, cách đọc cơ sở dữ liệu để lấy dữ liệu được lưu trữ trong ListView. Tôi biết có rất nhiều câu hỏi tương tự trên trang web này nhưng có vẻ như không có câu hỏi nào trong số họ áp dụng cho cách này, cơ sở dữ liệu từ hướng dẫn hoạt động.Android: Sử dụng SimpleCursorAdapter để lấy Dữ liệu từ Cơ sở dữ liệu sang ListView
Code:
import java.util.Calendar;
import maturarbeit.nicola_pfister.studenttools.database.DBAdapter;
import android.app.AlertDialog.Builder;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ListView;
public class Marks extends ListActivity {
DBAdapter db = new DBAdapter(this);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.marks);
}
@Override
protected void onPause() {
super.onPause();
db.close();
}
@Override
protected void onResume() {
super.onResume();
db.open();
getData();
}
@SuppressWarnings("deprecation")
private void getData() {
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1,
db.getAllMarks(),
new String[] { "value" },
new int[] { android.R.id.text1 });
ListView listView = (ListView) findViewById(R.id.marks_list);
listView.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.marks, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_add:
Calendar cal = Calendar.getInstance();
int day = cal.get(Calendar.DAY_OF_MONTH);
int month = cal.get(Calendar.MONTH);
final String date = day + "." + month;
Builder builder = new Builder(this);
builder
.setTitle(R.string.dialog_addmarks)
.setItems(R.array.markslist, new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
@SuppressWarnings("unused")
long id;
String selection = getResources().getStringArray(R.array.markslist)[which];
id = db.insertMark(date, "Default", selection);
}
})
.show();
getData();
break;
case R.id.menu_delete:
//Deleting function yet to be implemented.
break;
}
return super.onOptionsItemSelected(item);
}
}
Edit: ID ListView đã sai vì nó phải được android: danh sách.
Cảm ơn bạn. Tôi nghĩ rằng tôi nhận được, những gì bạn đang cố gắng giải thích. Tôi đã sử dụng bộ điều hợp của bạn nhưng tôi vẫn nhận được ngoại lệ làm treo ứng dụng của tôi. Tôi cho rằng lỗi ở đâu đó khác? – BlueHazard
Sao chép và dán LogCat (sử dụng liên kết chỉnh sửa ở phía dưới bên trái câu hỏi của bạn). Tôi sẽ xem qua một chút. Gắn thẻ tôi trong nhận xét (với "@Sam") khi bạn đã thực hiện việc này. – Sam
Tôi đã thêm LogCat vào câu hỏi của mình. Cảm ơn vì đã giúp tôi. – BlueHazard