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 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题