PDA

View Full Version : دریافت متن هر آیتم لیست ویو



zarabela
دوشنبه 09 شهریور 1394, 12:17 عصر
سلام
چطوری میشه متن هر آیتم لیست رو دریافت کرد؟ من از کد زیر استفاده کردم ولی توی جستجو به مشکل برمیخورم:
db.open();
Cursor c=db.getBeyt(position+1);

String clicked_item="بیت:\n"+c.getString(1)+"\nتلفظ:\n"+c.getString(2)
+"\nمعنی:\n"+c.getString(3)+"\nنتیجه:\n"+c.getString(4);
customDialog(clicked_item);
db.close();

مشکلم هم position هست چون مثلا وقتی من عنصر 12م لیست رو جستجو میکنم میاد اول و وقتی روش کلیک میکنم عنصر اول لیست رو نشون میده
چه راه دیگه ای برای این کار هست؟

zarabela
سه شنبه 10 شهریور 1394, 11:20 صبح
دوستان کسی نیست راهنمایی کنه؟

smemamian
پنج شنبه 12 شهریور 1394, 23:28 عصر
سلام

مشکل شما این هست که توی Adapterی که تعریف کردین فقط String هست. در واقع شما باید یک id هم در هر سطر از لیست ویو تون تعریف کنید.
برای مثال حالت زیر برای آداپتر کار جالبی نیست :


public class MyAdapter extends ArrayAdapter<String> {
...
}

چون در این حالت هر سطری که در لیست ویو دارید فقط یک متن هست.

روش مناسب تر به این روش هست که ابتدا یک کلاس به اصطلاح Helper ایجاد کنید و سپس آداپتری که می سازید از اون کلاس Helper کمک بگیرید(id در اینجا در واقع id دیتابیس هست):



public class ObjectsHelper{

public ObjectsHelper(){};

String id="",title="";


//setters
public void setId(String mid){

this.id = mid;

}

public void setTitle(String mtitle){

this.title = mtitle;

}

//getters
public String getId(){

return this.id;

}


public String getTitle(){

return this.title;

}


}

public class MyAdapter extends ArrayAdapter<ObjectsHelper> {
...

//To get an object
ObjectsHelper ob1 = getItem(position);
String id,title;
id = ob1.getId();
title = ob1.getTitle();

}


id رو من اینجا String گرفتم ولی شما بهتره int تعریف کنید.

(اگر مورد تایپی در کدهای بالا وجود داره علت این که من در NotePad نوشتم.)

سوالی بود بپرسید.