android 怎么刷新UI组件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 怎么刷新UI组件相关的知识,希望对你有一定的参考价值。
我通过代码动态添加删除edittext,当我点击提交按钮后,只留下一个edittext,其他全部remove掉,但是中间会流出很多空白,当我再添加一的edittext的时候就回复正常了,怎么让UI在我remove后是刷新一下呢
首先,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<void,void,void>()
@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();</void,void,void>
第三,利用配置文件+activity的生命周期方法刷新UI。 参考技术A 首先,android的UI刷新是在主线程(UI线程)中完成的。四大组件中,activity和service运行在主线程中。现在总结自己在项目中常用到的UI刷新方式。 参考技术B 删除的时候,也会自动调整布局的~~需要根据删除控件后的布局情况来分析 参考技术C View.requestLayout() 请求重新布局 View.invalidate() 刷新视图,相当于调用View.onDraw()方法 参考技术D 这个需要隐藏起来吧setvisiable(View.Gone)
以上是关于android 怎么刷新UI组件的主要内容,如果未能解决你的问题,请参考以下文章
使用新状态数据刷新 Material-UI DataGrid 组件