PDA

View Full Version : refresh کردن listview



mehdidanesh
یک شنبه 22 آذر 1394, 09:57 صبح
با سلام یک آداپتری رو پر کردم و در گریدویو قرار دادم حال زمانی که می خوام عملیاتی همچون پاک کردن و ... می خوام در همان لحظه آپدیت بشه
از notifyDataSetChanged هم استفاده کردم نشد
کد من:

MyDatabase = new MyDatabase(getApplicationContext());
db = MyDatabase.getReadableDatabase();
c = db.rawQuery(where, null);

allBook = MyDatabase.getAllBook(c,1);
myAdapter = new ArrayAdapter<String>(this,
R.layout.row_main_book, R.id.main_book_name, allBook);

myAdapter.notifyDataSetChanged();
gv.setAdapter(myAdapter);

چکار کنم؟!

mehdidanesh
دوشنبه 23 آذر 1394, 08:01 صبح
از دوستان کسی نبود به این سوال ما جواب بده!؟!

saeidpsl
دوشنبه 23 آذر 1394, 21:59 عصر
اینو چک کن




Adapters.clear();
Adapters.addAll(arraylist);
Adapters.notifyDataSetChanged();

mehdidanesh
سه شنبه 24 آذر 1394, 09:25 صبح
اینو چک کن




Adapters.clear();
Adapters.addAll(arraylist);
Adapters.notifyDataSetChanged();



قبلا هم از این استفاده کرده بودم ولی جواب نداده بود.

#root#
سه شنبه 24 آذر 1394, 09:51 صبح
معمولا ما آرایه ای از یه نوع داده ( یا object) به Adapter میدیم تا اطلاعات اون رو توی لیست برامون نمایش بده،
اینجا شما از دیتابیس استفاده کردین، هر کدوم از آیتم ها رو که میخوایین حذف کنید اول باید اون رو از دیتابیس پاک کنید در صورت موفقیت اون آیتم رو از آرایه هم حذف کنید و بعد از متد notifyDataSetChanged استفاده کنید.

ولی من که تو کدهاتون جز عملیات استخراج اطلاعات و نمایش اونا در لیست چیز دیگه ای نمیبینم.

mehdidanesh
سه شنبه 24 آذر 1394, 11:18 صبح
میشه واضح تر بگید؟
منظورتون از "هر کدوم از آیتم ها رو که میخوایین حذف کنید اول باید اون رو از دیتابیس پاک کنید" چیه؟
اگه امکان داره با در کد فوق توضیح بدین.
با تشکر

mehdidanesh
سه شنبه 24 آذر 1394, 13:57 عصر
معمولا ما آرایه از یه نوع داده ( یا object) به Adapter میدیم تا اطلاعات اون رو توی لیست برامون نمایش بده،
اینجا شما از دیتابیس استفاده کردین، هر کدوم از آیتم ها رو که میخوایین حذف کنید اول باید اون رو از دیتابیس پاک کنید در صورت موفقیت اون آیتم رو از آرایه هم حذف کنید و بعد از متد notifyDataSetChanged استفاده کنید.

ولی من که تو کدهاتون جز عملیات استخراج اطلاعات و نمایش اونا در لیست چیز دیگه ای نمیبینم.

چطور اون آیتم رو از آرایه حذف کنم یا به عبارتی آرایه را آپدیت کنم؟!

aliblk10
سه شنبه 24 آذر 1394, 17:08 عصر
آداپتر و لیست رو تو متد بذار و فراخوانی کن.من از متد زیر برای آپدیت استفاده میکنم و بعد از هر عملیاتی این متد رو فراخوانی میکنم و جواب میده
public void listAdaptor()
{
List<Map<String, String>> data = new ArrayList<Map<String, String>>();

adapter = new SimpleAdapter(this, data,
R.layout.gpslistview,
new String[] {"CarName", "Number"},
new int[] {android.R.id.text1,
android.R.id.text2});


//ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, list);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE );
listView.setAdapter(adapter);

SQLiteDatabase mydb = openOrCreateDatabase(SetData.dbName, Context.MODE_PRIVATE,null);
String query = "SELECT CarName,Mobile FROM "+SetData.tblName;
Cursor cget = mydb.rawQuery(query, null);


String[] CarMobile = new String[cget.getCount()];
String[] CarName = new String[cget.getCount()];

int ii = 0;

if(cget.moveToFirst()){
listView.setEnabled(true);

do{
CarName[ii] = cget.getString(0);
CarMobile[ii] = cget.getString(1);
Log.i("", CarName[ii] +"CarName[ii]");
Log.i("", CarMobile[ii] +"CarMobile[ii]");

Map<String, String> datum = new HashMap<String, String>(2);
datum.put("CarName", CarName[ii]);
datum.put("Number", CarMobile[ii]);

data.add(datum);

ii++;

}
while(cget.moveToNext());


mydb.close();


}
}

mehdidanesh
چهارشنبه 25 آذر 1394, 13:54 عصر
ممنون از توجهت دوست عزیز
اومدم توی ی کلاس دیگه ی آداپتر تعریف کردم درست شد (البت توی onresume کلاسمو صدا زدم)

public View getView(int position, View convertView, ViewGroup parent) {

if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.row_main_book, null);
holder = new ViewHolder();
holder.imageView = (ImageView) convertView
.findViewById(R.id.main_book_pic);
holder.textView = (TextView) convertView
.findViewById(R.id.main_book_name);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}

String imageInSD = Environment.getExternalStorageDirectory()
.getAbsolutePath()
+ "/IsBooks/Books/"
+ mAllAddress.get(position) + "/pic.png";

Bitmap bitmap = BitmapFactory.decodeFile(imageInSD);

holder.imageView.setImageBitmap(bitmap);
holder.textView.setText(mAllbook.get(position));

return convertView;
}

اینم توی onresume

@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();

where = "SELECT * FROM book WHERE download = 1";
MyDatabase = new MyDatabase(getApplicationContext());
db = MyDatabase.getReadableDatabase();
c = db.rawQuery(where, null);

allBook = MyDatabase.getAllBook(c, 1);

Cursor c1 = db.rawQuery(where, null);
allAddress = MyDatabase.getAddress(c1, 0, 6);

adapter1 = new ImageAdapter(this, allAddress, allBook);

gv.setAdapter(adapter1);
}