Android Adapter的notifyDataSetChanged更新listView显示,第一次进入包含list的Activity时可以更新,后续进入Activity更新无效

  1. list内容放于listItems中
    public class ListItem {
        private  int list_left;
        private  int list_right;
    
        public ListItem(int left, int right)
        {
            this.list_left = left;
            this.list_right = right;
        }
    
        ......
    }
    private List<ListItem> listItems = new ArrayList<>();
  2. 更新时在Adapter内调用
    notifyDataSetChanged();
    public void updateItem()
        {
            LogPrint.i(TAG,"updateItem.");
            notifyDataSetChanged();
        }
    在活动中需要更新的位置调用
    updateItem()
    ((ItemAdapter) adapter).updateItem();

     

  3. listItems初始化在Activity onCreate中进行的
    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ......
            /*list初始化*/
            initItems();
        }
    private void initItems()
        {
            ListItem item1 = new ListItem(...);
            ......
            ListItem item12 = new ListItem(...);
    
            listItems.add(item1);
            ......
            listItems.add(item12);
        }
  4. 由于定义listItems与adapter都未加static修饰,退出时Activity销毁后,再进入时,新的活动对象有自己的一份数据,与之前互不影响

    private ListAdapter adapter;
    private List<ListItem> listItems = new ArrayList<>();
    修改后:
    private static ListAdapter adapter;
    private static List<ListItem> listItems = new ArrayList<>();
  5. 上述两个变量都修改为静态变量后,由于每次启动Activity都会初始化listItems,每启动一次增加12条相同的数据,所以在
    onDestroy()中将listItems清除
    @Override
        protected void onDestroy() {
            super.onDestroy();
            listItems.clear();
        }

     

  6. 仅作为学习记录。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值