【发布时间】:2017-11-28 16:21:46
【问题描述】:
我有一个网格视图,每个网格项目中都有一个删除按钮。我的代码如下:
主要活动
...generate_photos()...
gd_view.setAdapter(new SampleGridViewAdapter(Photos.this));
gd_view.setOnScrollListener(new SampleScrollListener(Photos.this));
gd_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
Utilities.custom_toast(Photos.this, "View big", ""+position, "short");
}
});
gd_view.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener()
{
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int position, long arg3)
{
//Utilities.custom_toast(Photos.this, "LONG Press", ""+position, "short");
return true;
}
});
适配器
@Override public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
gridView =new View(context);
gridView = inflater.inflate(R.layout.inflated_gridview, null);
ImageView btn_delete = (ImageView) gridView.findViewById(R.id.btn_delete);
ImageView img_grid = (ImageView) gridView.findViewById(R.id.img_grid);
final TextView tv_ref = (TextView) gridView.findViewById(R.id.tv_ref);
final String url = getItem(position);
Picasso.with(context).load(url).fit().centerCrop().into(img_grid);
tv_ref.setText(""+id.get(position));
btn_delete.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
int id = Integer.parseInt(tv_ref.getText().toString());
Records_Photo n = Select.from(Records_Photo.class).where(Condition.prop("photo_Id").eq(id)).first();
n.delete();
}
});
return gridView;
问题:
按下删除按钮后,我希望gridview刷新,使删除的图片从gridview中消失。我正在尝试调用MainActivity.generate_photo(); to refresh but it saidnon-static 方法无法从静态上下文中引用`
那么如何在按下删除按钮后刷新gridview呢?现在好像是个循环。
谢谢。
【问题讨论】:
-
您是否从适配器列表中删除 Records_Photo 对象并使用
notifyDataSetChanged()刷新? -
你试过 notifyDataSetChanged() 方法吗
-
如果你按下删除按钮,然后关闭应用程序并再次打开它,你会得到想要的结果吗?
-
@H.Brooks:是的,如果关闭并重新打开,我会得到想要的结果。 IE。 gridview 已正确删除已删除的照片
标签: android button gridview onclicklistener