2 baidu 15438619 baidu_15438619 于 2016.03.21 15:41 提问

gridview的 adapter.notifyDataSetChanged()不刷新

图片说明
图片说明
这是自定义的adapter surfaceview的那个部分设置了visility=gone的,暂时先显示textview

图片说明
先加了两个item,运行时候可以显示

图片说明
这是另外开启了一个蓝牙ServerSocket的线程,连接到设备后就添加到mItems里,打日志发现添加成功,以为是在另外一个线程里直接调用notifyDataSetChanged()没用,就用了handler
图片说明

仍然没用。。界面就一直显示最开始强制添加的两个item

线程部分图片说明

3个回答

danielinbiti
danielinbiti   Ds   Rxr 2016.03.21 15:50

1、先看handler有没有发消息过来,就是LogUitls.d(TAG,REFRESH)有没有打印出来日志
2、getView中items的size对不对
先通过上面两个步骤,确定是哪个地方出问题了

danielinbiti
danielinbiti 回复baidu_15438619: 在sendmessage后面加上sleep(100)试试
一年多之前 回复
baidu_15438619
baidu_15438619 回复danielinbiti:就是除了handlerMessage的那里没打 其他都打印了而且是正确结果
一年多之前 回复
danielinbiti
danielinbiti 回复baidu_15438619: 运行日志呢
一年多之前 回复
baidu_15438619
baidu_15438619 回复danielinbiti: 我把线程部分贴上去了 其他不相干的地方太多了
一年多之前 回复
danielinbiti
danielinbiti 回复baidu_15438619: 不行你把activity中所有代码都贴一下
一年多之前 回复
baidu_15438619
baidu_15438619 回复danielinbiti: 没进
一年多之前 回复
danielinbiti
danielinbiti 回复baidu_15438619: sendMessage后就没动静了?没有进handleMessage这个方法?
一年多之前 回复
baidu_15438619
baidu_15438619 回复danielinbiti:也不行 那如果是不用handler直接用notifyDataSetChanged() 是不是因为在子线程所以没办法?但也没报错啊
一年多之前 回复
danielinbiti
danielinbiti 回复baidu_15438619: obtainMessage方式改成Message msg = new Message();
一年多之前 回复
baidu_15438619
baidu_15438619 没有发消息,size是对的
一年多之前 回复
maz5275125
maz5275125   2016.03.21 18:18

adapter.notifyDataSetChanged()没反应,是你的数据源数据没有变化,控件notify发现数据无变化

baidu_15438619
baidu_15438619 有的 数据源更新了的
一年多之前 回复
lxk_1993
lxk_1993   Rxr 2016.03.21 20:12

public void handleMessage(Message msg) {
switch (msg.what) {
case MarkUtil.MSG_SUCCESS:

        break.
        }
        super.handleMessage(msg);  //这句你没有吧
    }
baidu_15438619
baidu_15438619 加了也没用
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!