PDA

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



alireza142
دوشنبه 31 شهریور 1393, 11:56 صبح
سلام به همه دوستان

من یک لیست ویو سفارشی بر اساس یک بانک SQL ساختم که می خوام با کلیک روی یک دکمه مشخص ، یک از آیتم ها پاک بشه و لیست رفرش بشه. عمل پاک کردن اتفاق می افته اما لیست رفرش نمیشه و آیتم پاک شده همچنان در لیست وجود داره . اما اگه به اکتیویتی قبلی برم و دوباره به لیست برگردم، دیگه اون آیتم پاک شده در لیست وجود نداره...

حالا برای اینکه بشه بعد از پاک کردن اون آیتم لیست ویو رفرش بشه ، باید چه کدی رو بعد از فرمان پاک کردن آیتم اضافه کنم؟

ممنون از راهنماییتون.:لبخندساده:

اینم بخشی از کد های اکتیویتی

.
.
.

dbHandler = new DatabaseHandler(this);
list = dbHandler.getAllContacts();
listView = (ListView) findViewById(R.id.listView1);
adapter = new ListAdapter(this, list);
listView.setAdapter(adapter);

listView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
dbHandler.open();
TextView tv = (TextView) v.findViewById(R.id.tvId);
dbHandler.deleteContact(Long.parseLong(tv.getText( ).toString()));

}
});

jalil_gh
دوشنبه 31 شهریور 1393, 12:27 عصر
این کد رو بعد از پاک کردن آیتم اضافه کنید احتمالاً درست می‌شه.
adapter.notifyDataSetChanged();

alireza142
سه شنبه 01 مهر 1393, 09:26 صبح
ممنون از جوابتون.
اما یک مشکل مشابه دیگه هم در این زمینه دارم.:لبخندساده:
توی این بانک اطلاعاتی که دارم، یک ستون به نام جنسیت هم قرار داره. یک دکمه ( در اکتیویتی که اون مقادیر رو در لیست نشون میده) ، گذاشتم که با زدنش فقط مرد ها رو نشون بده و دیگه خانم ها در لیست نباشند.(یه جور فیلتر برای دسترسی سریعتر به اسم مورد نظر). اما با زدن اون دکمه همش خطا میده و برنامه رو میبنده.
ممنون میشم بفرمایید کجای کد ها ایراد داره...

اینم بخشی از کدهای اکتیویتی اصلی




.
.
.

jastMard.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

private ArrayList<Contact> list;

dbHandler.open();
list = dbHandler.getJustMard();
adapter.setData(list);
listView.setAdapter(adapter);

}
});




این هم بخشی از کدهای کلاس DatabaseHandler





.
.
.

public ArrayList<Contact> getJustMard() {
ArrayList<Contact> contacts = new ArrayList<Contact>();

Cursor cursor = db.rawQuery("select * from " + dbHelper.getTableName()
+ " where " + dbHelper.getFieldSex() + " = 1", null);
if (cursor.moveToFirst()) {
do {
Contact contact = cursorToContact(cursor);
contacts.add(contact);
} while (cursor.moveToNext());
}

cursor.close();

return contacts;
}

bia2joker
چهارشنبه 02 مهر 1393, 01:12 صبح
کد اینجوری تغییر بده ببین درست میشه




List<Contact> allTags = dbHandler.getJustMard();
for (Contact cn : allTags) {

list.add(cn);
}









حالا list رو به adapter جدید set کن

تازه توی DBHandeler به جای
ArrayList<Contact> getJustMard()
بنویس
List<Contact> getJustMard()