Soru & Cevap

android searchview arama yapma ACİL YARDIM:( ...

11.04.2016 - 07:08

listview de tıkladığım satır diğer activity de edittextlerde açılıyor.listview de arama yapabiliyorum ama arama yaptığımda tıkladığım satır yerine rastgele başka satırın içeriği açılıyor.tıkladığım satır içeriğinin gelmesini nasıl sağlayabilirim.2.kod parçası activity2 sayfasında yer alan listview de arama yapmadan satırın  açılmasını sağlıyor

 

public class Main2Activity extends Activity implements SearchView.OnQueryTextListener  {
    private Veritabani v1;
    ListView list;
    SearchView sv;
    private ArrayAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        v1 = new Veritabani(this);
        list = (ListView) findViewById(R.id.listView2);
        sv=(SearchView)findViewById(R.id.searchView);
        Cursor cursor = KayitGetir();
        KayitGoster(cursor);
    }
    public static int idSnf;
    private String[] SELECT = {"id","konu", "icerik","tarih"};
    private Cursor KayitGetir() {
        SQLiteDatabase db = v1.getReadableDatabase();
        Cursor cursor = db.query("veri", SELECT ,null, null, null, null, null);
        startManagingCursor(cursor);
        return cursor;
    }
    ArrayList<String> array = new ArrayList<String>();
    ArrayList<Integer> idtxt = new ArrayList<Integer>();

    private void KayitGoster(final Cursor cursor) {
        array.clear();
        String konu = "";
        String note = "";
        int i = 1;
        while (cursor.moveToNext()) {
            long id = cursor.getLong(cursor.getColumnIndex("id"));
            konu = cursor.getString((cursor.getColumnIndex("konu")));

            DateFormat dateFormat=DateFormat.getDateInstance();

            String TARIH = dateFormat.format(new Date(cursor.getLong(cursor.getColumnIndex("tarih"))).getTime());
            note += konu +" "+TARIH;
            idtxt.add((int)id);
            array.add(konu + " \n "+TARIH);
            i++;
        }
        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, android.R.id.text1, array);
        list.setAdapter(adapter);

        list.setTextFilterEnabled(true);
        setupSearchView();

        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                idSnf = idtxt.get(position);
                Intent i = new Intent(Main2Activity.this, Main22Activity.class);
                startActivity(i);
            }
        });
    }
    private void setupSearchView() {
        sv.setIconifiedByDefault(false);
        sv.setOnQueryTextListener(this);
       // sv.setSubmitButtonEnabled(true);
        sv.setQueryHint("Search..");
    }
    public boolean onQueryTextSubmit(String newText) {

        return false;
    }
    public boolean onQueryTextChange(String newText) {
       if (TextUtils.isEmpty(newText)) {
            list.clearTextFilter();
        } else {
           list.setFilterText(newText.toString());
        }
        return true;
    }
}

 public void ayrintiliList(int id) {
        String selectQuery = "SELECT * FROM veri WHERE id=" + id;


        SQLiteDatabase db = v1.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        if (cursor.moveToFirst()) {
            //degerler okunur
            long idd = cursor.getLong(cursor.getColumnIndex("id"));
            String konuu = cursor.getString((cursor.getColumnIndex("konu")));
            String icerikk = cursor.getString((cursor.getColumnIndex("icerik")));
            konu.setText(konuu);
            icerik.setText(icerikk);
        }
        while (cursor.moveToNext()) ;
        cursor.close();
        db.close();

    }



}

 

74 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-43017-1458859154.png
farukguner72
13.04.2016 - 02:31
Siz veri çekerken listviewden position olarak aliyorsunuz id'yi ama veritabanında o verinin id'si farklı onu diyorum.
Profile picture for user mrvylmz0614
mrvylmz0614
12.04.2016 - 10:20
Tam anlayamadım demek istediğinizi:(
picture-43017-1458859154.png
farukguner72
12.04.2016 - 01:50
Sen arama yaparken cikan listede tikladigin position id olarak geliyor ama cekilen veri ise veritabanındaki idyi istiyorsun sorun ondan kaynakliyordur. Sen 1. activity de sharedpreferences(sp) ile positiondan çektiğin verinin gercek idsini tut 2. Activityde idyi sp'den cek.