Я разрабатываю приложение, которое содержит gridview. Я заполняю эту сетку специальным адаптером, содержащим изображение и текст.Android удаление элемента из gridview
adapter = new CustomGrid(this, titlearray, imageId);
grid=(GridView)findViewById(R.id.gridView1);
grid.setAdapter(adapter);
При нажатии на любой пункт, откроется диалоговое окно, содержащее кнопку, что я хочу, когда я нажимаю на эту кнопку, элемент будет удален. Я проверил множество решений, они сказали, что я должен изменить адаптер или использовать новый.
Я попытался следующий код, я помещаю данные в новых массивах и загружать их в адаптер затем использовать их в сетке:
String[] ntarray=new String[wcount];
Drawable[] ndarray=new Drawable[wcount];
if(position==0)
{
for(int i=0;i<wcount;i++)
{
ntarray[i]=titlearray[i+1];
ndarray[i]=imageId[i+1];
}
}
if(position==wcount-1)
{
for(int i=0;i<wcount-1;i++)
{
ntarray[i]=titlearray[i];
ndarray[i]=imageId[i];
}
}
adapter = new CustomGrid(Wishlist.this, ntarray, ndarray);
grid.setAdapter(adapter);
adapter.notifyDataSetChanged();
dialog.hide();
Я использую адаптер пользовательские сетки:
package com.erc.test;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
public class CustomGrid extends BaseAdapter{
private Context mContext;
private final String[] web;
private final Drawable[] Imageid;
public CustomGrid(Context c,String[] web,Drawable[] imageId) {
mContext = c;
this.Imageid = imageId;
this.web = web;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return web.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View grid;
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
grid = new View(mContext);
grid = inflater.inflate(R.layout.grid_single, null);
Button textView = (Button) grid.findViewById(R.id.grid_text);
ImageView imageView = (ImageView)grid.findViewById(R.id.grid_image);
textView.setText(web[position]);
// textView.setShadowLayer(2, 1, 1, Color.BLACK);
imageView.setImageDrawable(Imageid[position]);
} else {
grid = (View) convertView;
}
return grid;
}
}
Есть ли какая-либо функция или какой-либо метод, который может помочь мне удалить этот элемент без создания нового адаптера, если да, как я могу добавить его в свой класс customgrid?
Почему бы вам не добавить функцию remove() в свой список и не удалить этот список() из своего списка? Следующий вызов adapter.notifyDataSetChanged() в существующем адаптере, и он должен обновить/обновить – avk
. Вы можете создать метод внутри пользовательского адаптера, который удалит элемент из * ntarray * и * ndarray *, после чего вы вызываете * notifyDataSetChanged(); * в обновите gridview. – Rami
Я отредактировал вопрос, можете ли вы мне помочь –