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组件的主要内容,如果未能解决你的问题,请参考以下文章

UI刷新组件和代码刷新组件

若依框架前端新增页面组件(对应文件夹RUOYI-UI

使用新状态数据刷新 Material-UI DataGrid 组件

UI组件——用jQuery做一个上拉刷新

数据变化时如何在ReactJS中刷新Material-Table(Material-ui)组件

Element ui在table组件中使用slot来自定义表头,数据无法刷新