بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
آپدیت لیست ویو(حل نشده)
سلام.
من یک لیست ویو دارم که نمایش اطلاعاتش از طریق دیتابیس فراهم میشه ، وقتی روی هر کدام از ایتم های لیست ویو کلیک میشه گزینه ای باز میکنم که بشه آیتم ها حذف کرد. و حذف هم میشه از داخل دیتابیس ولی لیست ویو آپدیت نمیشه تا این که برنامه یک بار ببندم و دوباره باز کنم.
حالا سوالم اینه، چی کار کنم که بعد حذف یک مورد از دیتابیس ، لیست ویوی من آپدیت بشه؟
0
0
آداپتر را notifydataSetChange کرده اید؟ می بایست پس از اعمال تغییرات اداپتر را با این عمل به روز رسانی کنید. (11 سال پیش)
+3
0
بله این کار را انجام داده ام. درست نشده (11 سال پیش)
0
0
موقعی که یک مورد رو حذف کردید دوباره اطلاعات موجود در دیتابیس رو بخونید و بعد notifydataSetChange کنید (11 سال پیش)
برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال
Denabit
11 سال پیش
+1
0
با استفاده از کد زیر میتونید این کار رو انجام بدید
Delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
AlertDialog.Builder builder = new AlertDialog.Builder(G.currentActivity);
builder.setTitle("حذف").setMessage("حذف شود؟");
builder.setPositiveButton("بله", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
G.database.execSQL("DELETE FROM person WHERE person_name='" + customername + "'");
adapter.remove(item);
Toast.makeText(G.currentActivity, "حذف شد", 2000).show();
}
});
builder.setNegativeButton("خیر", null);
builder.setIcon(android.R.drawable.ic_dialog_alert).show();
}
});
پاسخ به سوال
amir Alu
11 سال پیش
0
0
ای کد من هست
public class AdapterData extends ArrayAdapter<StructData> {
public AdapterData(ArrayList<StructData> array) {
super(G.context, R.layout.date_list_layout, array);
}
private static class ViewHolder {
public ViewGroup layoutRoot;
public TextView txt1;
public TextView txt2;
public TextView txt3;
public ImageView img1;
public ImageView img2;
public ViewHolder(View view) {
txt1 = (TextView) view.findViewById(R.id.txt1);
txt2 = (TextView) view.findViewById(R.id.txt2);
txt3 = (TextView) view.findViewById(R.id.txt3);
layoutRoot=(ViewGroup) view.findViewById(R.id.lay_list_item);
img1=(ImageView) view.findViewById(R.id.img1);
img2=(ImageView) view.findViewById(R.id.img2);
}
public void fill(final ArrayAdapter<StructData> adapter, final StructData item, final int position) {
txt1.setText(item.txt1);
txt2.setText(item.txt2);
txt3.setText(item.txt3);
if(item.img){
img1.setVisibility(View.VISIBLE);
img2.setVisibility(View.INVISIBLE);
}else{
img1.setVisibility(View.INVISIBLE);
img2.setVisibility(View.VISIBLE);
}
if(!item.done){
layoutRoot.setBackgroundResource(R.drawable.list_item);
}else{
layoutRoot.setBackgroundResource(R.drawable.list_item2);
}
layoutRoot.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
final Dialog dialog=new Dialog(G.currentActivity);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.setContentView(R.layout.dialog_item);
dialog.findViewById(R.id.layoutCloseDialog).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
dialog.findViewById(R.id.layoutDeleteDialog).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
G.database.delete("gharz", "_id="+item._id, null);
adapter.remove(item);
adapter.notifyDataSetChanged();
dialog.dismiss();
}
});
dialog.findViewById(R.id.layoutbackColor).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
G.database.execSQL("UPDATE gharz SET done='true' WHERE _id='"+item._id+"'");
adapter.notifyDataSetChanged();
dialog.dismiss();
}
});
dialog.show();
}
});
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
StructData item = getItem(position);
if (convertView == null) {
convertView = G.inflater.inflate(R.layout.date_list_layout, parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.fill(this, item, position);
Animation anim =null;
anim=AnimationUtils.loadAnimation(G.context, R.anim.push_left_in);
convertView.startAnimation(anim);
anim=null;
return convertView;
}
}
مشکل من الان این قسمت هست
dialog.findViewById(R.id.layoutbackColor).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
G.database.execSQL("UPDATE gharz SET done='true' WHERE _id='"+item._id+"'");
adapter.notifyDataSetChanged();
dialog.dismiss();
}
});
وقتی این قسمت اجرا میشه مقدار done برابر true میشه و قانونن باید رنگ بک گراند عوض بشه چون بالا این رو نوشتم اما این اتفاق نمی افتد مگر این که یک بار برنامه بسته و مجدد باز بشه
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .