lg-joker 2017-03-20 09:11 采纳率: 0%
浏览 824

AS导入以前项目之后,UI太老旧,如何更新UI?

我修改了API,targetSdkVersion都没有用啊
如果直接复制代码以后UI是新的,但莫非每次都这样吗?
没有好的解决方法吗?
小白提问,刚开始学习安卓。谢谢大佬们。

  • 写回答

2条回答

  • Android开发-CXY 2017-03-20 09:33
    关注

    首先,android的UI刷新是在主线程(UI线程)中完成的。四大组件中,activity和service运行在主线程中。现在总结自己在项目中常用到的UI刷新方式。
    第一,利用子线程发消息刷新UI。
    子线程负责处理UI需要的数据,然后发消息到主线程来刷新UI。代码结构如下:
    new Thread(new Runnable() {
    @Override
    public void run() {
    Person person=new Person();
    person.setName(mName.getText().toString().trim());
    person.setPhone(mPhone.getText().toString().trim());
    Log.i("person",person.toString());
    DatabaseInfoFactory.getPersonDao(mContext).addPerson(person);
    Looper.prepare();
    Message msg=Message.obtain();
    msg.what=0x123456;
    handler.sendMessage(msg);
    Looper.loop();
    }
    }).start();
    主线程中:
    private Handler mHandler=new Handler(){
    @Override
    public void handleMessage(Message msg) {
    // TODO Auto-generated method stub
    super.handleMessage(msg);
    if(msg.what==0x123456||msg.what==0x123){
    fillData();
    setListener();
    }
    }
    };
    第二,利用异步任务更新UI。代码结构如下:
    new AsyncTask() {
    @Override
    protected void onPostExecute(Void result) {
    if(mAdapter==null){
    mAdapter=new LeaveInfoAdapter();
    //设置数据适配器
    mLVleaveInfos.setAdapter(mAdapter);
    Log.i("测试", "异步任务显示后台获得数据库数据");
    }
    else {
    mAdapter.notifyDataSetChanged();
    }
    super.onPostExecute(result);
    }
    @Override
    protected Void doInBackground(Void... params) {
    //获得要显示的数据
    mleaveInfos=mLeaveInfosDao.findAll();
    if (mleaveInfos==null) {
    Toast.makeText(HomeActivity.this,"请假数据不存在或是已经清除!", 500).show();
    }
    Log.i("测试", "异步任务后台获得数据库数据"+mleaveInfos.size());
    return null;
    }
    }.execute();
    第三,利用配置文件+activity的生命周期方法刷新UI。

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置