Veri depolamak ve ondan okumak için bir veritabanı kullanması gereken bir android uygulaması programlıyorum. this tutorial (on archive.org) kullanarak Ben bir veritabanı oluşturmak için app var ve yeni girişler oluşturmak mümkün, ancak, ben bir ListView saklanan verileri almak için veritabanını okumak için nasıl bilmiyorum. Bu web sitesinde pek çok benzer soru olduğunu biliyorum, ancak bunların hiçbiri başvuru için geçerli değil.Android: Veritabanından DataView'a erişmek için SimpleCursorAdapter'ı kullanma
Kodu:
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);
}
}
Düzenleme: listesi: o android olmak zorundaydı çünkü ListView kimliği yanlıştı.
Teşekkür ederiz. Anladım, ne anlatmaya çalışıyorsun. Bağdaştırıcınızı kullandım ancak uygulamanızı çökerten bir istisna yapıyorum. Hatanın başka bir yerde olduğunu mu varsayıyorum? – BlueHazard
LogCat'i kopyalayıp yapıştırın (sorunuzun sol altındaki düzenleme bağlantısını kullanın). Bir bakacağım. Bunu yaptığınızda bir yorumda ("@Sam" ile) beni etiketleyin. – Sam
LogCat’ı soruma ekledim. Bana yardım ettiğin için teşekkürler. – BlueHazard