android gridview刷新数据库,android gridview 刷新数据问题

问题:项目用gridView分页,在onkeydown事件里按左右键,

myAdapter.notifyDataSetChanged()刷新数据没反应

解决过程:

1.请教大侠,大侠告诉说这个notifyDataSetChanged方法是不可靠的,并给了方法试试:

gv.setAdapter(null);

gv.setAdapter(myAdapter);

这个思路是没错的,但是明显会报一个异常:

E/AndroidRuntime( 896): java.lang.IllegalStateException: Observer android.widget.AbsListView$AdapterDataSetObserver@4187da80 was not registered. 根据这个思路,在网上找到一个不是办法的解决办法:

gv.setVisibility(View.GONE);

gv.setAdapter(myAdapter);

gv.setVisibility(View.VISIBLE);

这样虽然暂时能解决刷新问题,但是又个问题出现了,每次这样隐藏再显示后,焦点会自动跑到下一级节点上,所以还是达不到效果

2.后来在网上找到一个很实际解释,在csdn上,具体链接我忘了╮(╯▽╰)╭。。。

在自定义的adapter里复写的getView方法中,相信很多人都是用

if (convertView == null) {

View v = LayoutInflater.from(mcontext).inflate(

R.layout.app_category_search_item, null);

itemInfo = new ItemInfo();

itemInfo.appicon = (ImageView)v.findViewById(R.id.iv_appicon);

itemInfo.appname = (TextView)v.findViewById(R.id.tv_appname);

String appname=apps.get(position).appProps.get("name");

itemInfo.appname.setText(appname);

itemInfo.appstar = (RatingBar) v.findViewById(R.id.rb_star);

float rating=Float.parseFloat(apps.get(position).appProps.get("star"));

itemInfo.appstar.setRating(rating);

itemInfo.appprice = (TextView) v.findViewById(R.id.tv_appprice);

String appprice=apps.get(position).appProps.get("price");

v.setTag(itemInfo);

convertView = v; }

else {

itemInfo = (ItemInfo) convertView.getTag();

}

return convertView;

}

问题就是出现在这里:

if(convertView == null)

重用converView对象,这样没调用myAdapter.notifyDataSetChanged();得到的convertView都是之前的,没法达到刷新的效果

解决方法:

去掉这个if判断,调用myAdapter.notifyDataSetChanged();正常刷新O(∩_∩)O~

可能理解方面或许有错误,欢迎指正。。。

同上面之后,又出现了个问题:1.我这个activity作为一个单例模式启动,往gridview里的每个item添加一个进度条,并在onResume里重新得到list,并调用myAdapter.notifyDataSetChanged();gridview数据并没有刷新(指的是item新加的没有刷新出来,但是list.size()却加1了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值