В общем сейчас делаю корзину покупок, и при удалении товара столкнулся с проблемой обновления окна, когда товар удален.
В главном окне есть код, который принимает инфу:
gvCart=(GridView)findViewById(R.id.gridView_Cart);
final List
Но вью элементы управления и коннект на удаление информации находится в адаптер окне, ниже:
public class AdapterCartBuy extends BaseAdapter {
final String TAG = "mylogs";
private LayoutInflater inflater;
private Activity activity;
private List
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(inflater==null){
inflater=(LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
if(convertView ==null){
convertView=inflater.inflate(R.layout.item_cart,null);
}
if(imageLoader==null)
imageLoader=AppController.getmInstance().getmImageLoader();
NetworkImageView imageView= (NetworkImageView) convertView.findViewById(R.id.networkImageView_cart);
ImageView del=(ImageView)convertView.findViewById(R.id.imageviewCartDel);
final TextView textViewToken=(TextView)convertView.findViewById(R.id.textView_itemcart_token);
textViewToken.setVisibility(View.GONE);
final TextView itemId=(TextView)convertView.findViewById(R.id.textView_itemcart_id);
itemId.setVisibility(View.GONE);
del.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String del = "http://wwwwwwww/cart/"+itemId.getText().toString()+"/del";
StringRequest request = new StringRequest(Request.Method.GET, del, new Response.Listener
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
public Map
return params;
}
};AppController.getmInstance().addToRequesQueue(request);
}
});
//getting data for row
final ItemCart item=items.get(position);
imageView.setImageUrl(item.getImage(), imageLoader);
textViewToken.setText(item.getToken());
itemId.setText(item.getItem_id());
return convertView;
}
Надеюсь проблема понятна, и вопрос стоит в том, как я могу обратиться чтобы обновить адаптер в главном классе через слушатель кнопки в другом, адаптер-классе. Или как можно это по другому, грамотно реализовать и не выдумывать костылей.
Ответ
Ваша проблема в том, что обновляя адаптер вы не изменяете данные, которые он отображает. Сначала измените данные, потом обновляйте адаптер.
if (response.contains("true")){
//ВОТ ТУТ НУЖНО ОБНОВИТЬ АДАПТЕР В ГЛАВНОМ ОКНЕ
final ItemCart item=items.get(position);
//удаляем элемент из списка данных
items.remove(item);
//обновляем адаптер
notifyDataSetChanged();
}
Скорее всего нужно будет также переопределить equals метод в классе ItemCart
Комментариев нет:
Отправить комментарий