android 怎么刷新UI组件

我通过代码动态添加删除edittext,当我点击提交按钮后,只留下一个edittext,其他全部remove掉,但是中间会流出很多空白,当我再添加一的edittext的时... 我通过代码动态添加删除edittext,当我点击提交按钮后,只留下一个edittext,其他全部remove掉,但是中间会流出很多空白,当我再添加一的edittext的时候就回复正常了,怎么让UI在我remove后是刷新一下呢 展开
 我来答
浅浅半4dab
推荐于2017-09-04 · TA获得超过617个赞
知道小有建树答主
回答量:352
采纳率:100%
帮助的人:376万
展开全部
首先,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。
长沙新华电脑学院
2019-03-24 · IT、电竞电商、设计、动漫专业对口升学
长沙新华电脑学院
凡初中及初中毕业生进入长沙新华对口升学班读三年后,由长沙新华统一组织报职教高考对口升学,然后通过对口升学录取到大专或本科院校继续深造获取全日制大专/本科文凭。
向TA提问
展开全部
首先,android的UI刷新是在主线程(UI线程)中完成的。四大组件中,activity和service运行在主线程中。现在总结自己在项目中常用到的UI刷新方式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-14
展开全部
删除的时候,也会自动调整布局的~~需要根据删除控件后的布局情况来分析
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-14
展开全部
View.requestLayout() 请求重新布局 View.invalidate() 刷新视图,相当于调用View.onDraw()方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-14
展开全部
这个需要隐藏起来吧setvisiable(View.Gone)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式