‘壹’ fragment如何刷新界面
你可扰模衫以这样设置下:
自己写一个
缓存类,用于保存用户第一次从数据库读取出来的数据,当第2次进来的时候,先把这个缓存数据赋值上去,同事判断网络上的数据有没有更新,在刷到这个页面,码陵同时并更新数据库!这样比每次都从数据库都取效缓腔果要好些!
‘贰’ android 怎样在fragment中给listview添加下拉刷新上拉加载
注意事项:
1、XListView因为添加了Header,会导致存储的数据+1,所以赋值时需要position-1。补充:当去掉HeaderView时,position不用-1。
2、提个建议:上拉加载更多,最好在onCreate()中就执行setAdapter,然后不论是空数据、还是有数据,只用更新适配器就行了。
一、XListView
1、下载
gitHub的地址。或者从这儿下。
2、用法
导入图中的me.maxwin.view包
提供了两个接口:
IXListViewListener:触发下拉刷新,上拉加载更多。实现此接口时,onLoadMore()用来上拉加载更多,onRefresh()用来下拉刷新。
‘叁’ Android中Fragment怎样刷新UI
刷新UI要在主颂绝线程,Fragment和Activity是类似的,所以在要刷新UI的地方handler发者樱扒送消息,在主线程中定义的首昌hanler处理消息,更新UI,建议看下安卓的安卓handler机制。
‘肆’ android 怎么刷新fragment页面
通常的做法,在onResume中发一起一个异步的请求去拿数据,通过回调,收到返回的数据,然后更新UI。
网络获取数据结束判断数据有更新,然后通过set将控件的数据更新。
举例:
这个是我的一个fragment,我把它放在一个viewpager的fragment中
java">{
privatestaticfinalStringARG_CITY="city";
privateStringmCity;
privateTextViewtmpD;
privateTextViewtmpN;
privateSimpleDraweeViewimageD;
privateSimpleDraweeViewimageN;
(Stringcity){
BottomFragmentOnefragment=newBottomFragmentOne();
Bundleargs=newBundle();
args.putString(ARG_CITY,city);
fragment.setArguments(args);
returnfragment;
}
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
if(getArguments()!=null){
mCity=getArguments().getString(ARG_CITY);
}
}
@Override
publicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,
BundlesavedInstanceState){
//
Viewview=inflater.inflate(R.layout.bottom_fragment_one,container,false);
tmpD=(TextView)view.findViewById(R.id.tmp_d);
tmpN=(TextView)view.findViewById(R.id.tmp_n);
imageD=(SimpleDraweeView)view.findViewById(R.id.image_d);
imageN=(SimpleDraweeView)view.findViewById(R.id.image_n);
setUI();
returnview;
}
//用来设置UI,更新UI时重新从数据库获取数据,进行设置
publicvoidsetUI(){
Forecastforecast=mFrecastDao.getForecastByCity(mCity);
tmpD.setText(forecast.getDaily_1_max());
tmpN.setText(forecast.getDaily_1_min());
imageD.setImageURI(getImageUri(forecast.getDaily_1_code_d()));
imageN.setImageURI(getImageUri(forecast.getDaily_1_code_n()));
}
}
2.除了上面那个,还有一个类似的fragment,我想实按下按钮后,在两个fragment之间进行切换。下面是按钮代码
@Override
publicvoidonClick(Viewv){
FragmentManagerfm=getChildFragmentManager();
//开启Fragment事务
=fm.beginTransaction();
switch(v.getId())
{
caseR.id.button_left:
if(mBottomOne==null)
{
mBottomOne=newBottomFragmentOne().newInstanceOne(mCity);
}//使用当前Fragment的布局替代id_content的控件
transaction.replace(R.id.bottom_weather,mBottomOne);
break;
caseR.id.button_right:
if(mBottomTwo==null)
{
mBottomTwo=newBottomFragmentTwo().newInstanceTwo(mCity);
}
transaction.replace(R.id.bottom_weather,mBottomTwo);
break;
}
//事务提交
transaction.commit();
}
3.下面是viewpager中的fragment用来更新上面两个fragment数据的方法。
publicvoidUpdateUI(){
mBottomOne.setUI();
mBottomTwo.setUI();
}
‘伍’ android fragment 刷新功能
本文 介绍两点 已是fragment的切换 一是fragment刷新
先说第一点 fragment的切换
目前fragment在开发中应用越来越广泛 当然也非常方便
而我们切换fragment 也有两中方式
第一种是replace的方法进行的 这种方式要看运用场景 用起来很方便 但是个人感觉效果并不好 因为这种方式进行切换得话 首先他会remove掉当前的fragment,然后在new 一个新的fragment进行add,也就是说当前fragment中的所有东西都是重新加载的 所以个人不建议使用这种方式进行fragment的高频率切换 这种只适合fragment切换和使用次数比较少的情况
第二种是show+hide 进行fragment切换 这种方式相比第一指携铅种可能会复杂一点 首先要建立几个fragment 开始事务 然后判断添加 举个例子
1 创建fragment……
2 添加事务 android.app.FragmentTransaction ft = getFragmentManager().beginTransaction();
–#在添加之前先进行判断隐藏#–
// 这是hide fragment 的方法
onHideFragment(ft);
3 判断添加
if (homeFragment==null){
homeFragment = new HomeFragment();
ft.add(R.id.content,homeFragment);
}else {
ft.show(homeFragment);
}
4 判断隐藏
if (homeFragment!=null){
ft.hide(homeFragment);
}
5 添加一个默认显示fragment 也就是你进入activity需要显示的那个
好 此时你就完成了使用hide + show 进行fragment切换了
现在我们说第二点 就是fragment的刷新需求
我们可能会需要fragment的刷新功能 例如说是我首页使用fragment 进行功能切换时 希望返回到之前的fragment可以刷新 或者返回到activity时 fragment也可以刷新 本人使用了 两种方法进行fragment的隐岁刷新 我想大部分应该都会使用第一种 返回activity时 fragment刷新 就是重写acvitity的onstart() 方法进行刷新fragment的数据 但是这唯好是有弊端的 第一就是假如你使用了listview或者gridview 时会出现重复加载的情况 所以使用这种方法时 你就要进行清空数据并刷新适配器就可以避免了
第二种 就是使用hide+show时 在fragment进行切换时 刷新fragment 此时会有这样一个这样的方法 onHiddenChanged(boolean hidden);看方法名 你也可以看出来 就是在hide有变化时使用 hidden参数是boolean 当hidden为true时表示fragment在hide 此时不必更新数据 当hidden为false时 他就不隐藏了 此时更新
if (hidden){
return;
}else {
list.clear();
getSellList();
}
list是要清空的 避免重复加载
–#onHiddenChanged(boolean hidden); 这是fragment的方法哦 !!!#–
本文 到此结束 希望对各位有所帮助 有问题可以评论区提出 大家一起进步
‘陆’ Android中Fragment怎样刷新UI
在activity 的onActivityResult 调虚携罩用fragment 的onActivityResult 方法隐汪,
例如getSupportFragmentManager().getFragments().get(mViewPager.getCurrentItem()).onActivityResult(requestCode, requestCode, data);
然差闹后在fragment的onActivityResult做处理