async task kullandım ama cursoru listviewe doInBackground ile aktaramadım. Dolayısı ile lütfen bekleyiniz yazısı çıkmıyor beklerken. Kullandığım kodları yazayım belki bende bir hata vardır.
[code] ((ImageButton)findViewById(R.id.btn_ara)).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
new LoadViewTask().execute();
}
});[/code]
Bu kod ile butona basıldığında LoadViewTask ı çalıştırıyorum.
[code]
private class LoadViewTask extends AsyncTask<String, Integer, String>
{
@Override
protected void onPreExecute()
{
progressDialog = ProgressDialog.show(anaekran.this,"Kayıtlar Listeleniyor","Sadece bir kaç saniye.....", false, false);
}
@Override
protected String doInBackground(String... values)
{
kelime_tv = (EditText) findViewById(R.id.txt_ara_kelime);
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(kelime_tv.getWindowToken(), 0);
memberName = kelime_tv.getText().toString().trim();
lv = (ListView) findViewById(R.id.listview_tabir_arama);
baslayan = (RadioButton) findViewById(R.id.baslayan);
iceren = (RadioButton) findViewById(R.id.iceren);
kendisi = (RadioButton) findViewById(R.id.kendisi);
if (baslayan.isChecked()==true){cursor = KayitGetirAramabaslayan();}
else if (iceren.isChecked()==true){cursor = KayitGetirAramaiceren();}
else {cursor = KayitGetirAramakendisi();}
return "";
}
@Override
protected void onProgressUpdate(Integer... values)
{
progressDialog.setProgress(values[0]);
}
@Override
protected void onPostExecute(String result)
{
String[] from = new String[] { "_id", "baslik" };
int[] to = new int[] { R.id.list_tabir_id, R.id.list_tabir_baslik };
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
anaekran.this, R.layout.tabir_ara_list, cursor, from, to);
lv.setEmptyView(findViewById(android.R.id.empty));
lv.setAdapter(adapter);
progressDialog.dismiss();
}
}
[/code]
Burada da veritabanından sogu yaptırıp lv ye aktarıyorum.Kullandığım sorgu da
[code]
private Cursor KayitGetirAramabaslayan(){
kosullar="";
String arr[] = memberName.split(" ");
for(int i = 0; i < arr.length; i++){
kosullar=kosullar + " or baslik like '" + arr[i]+"%'" ;
}
//kosullar= "or baslik like 'ali'";
SQLiteDatabase db = kategoriler.getReadableDatabase();
Cursor cursor = db.query(true,"nedir", SELECT ,"baslik like '"+memberName+"%'"+ kosullar+"" , null, "baslik", null,null,"500" );
startManagingCursor(cursor);
return cursor;
}
[/code]
Benim için listview e kayıtlar aktarılana kadar lütfen bekleyiniz yazsada yeterli olur. Ama onPostExecute deki işlemleri doInBackground da yapamıyorum hata alıyorum. Nerde hata yapıyorum?