android刷新数据
‘壹’ android studio模拟器怎么刷新内容
第一种方式,可以通过定时刷新项目中的文件,
1.首先需要打开的是Android studio的软件,并在软件中加载项目,
2.点击菜单中的file的选项。弹出的下拉的菜单中可以看到的是为“settings”的选项。这样就进入到了settings的设置界面中,在设置选项的列表中有一项为version control,选项并点击进入即可。
3.点击完version control的选项之后,就会展开这个选项的所有菜单,可以直接点击 background的选项。
4.点击完version control的选项之后,就会展开这个选项的所有菜单,可以直接点击 background的选项。
5.直接进入到了background的设置界面中,在这个界面中,找到一项为VCS Historycache settings的选项,把refresh changes every的选项勾选上,对时间进行设定根据自己需要设置时间长短。
第二种方式是通过手动刷新文件的状态,进入到Android studio的界面中,点击菜单中 CVS。弹出的下拉的菜单中,可以看到为Refresh File status的选项,点击完成之后,就会刷新了项目的文件的状态。
‘贰’ android下拉上拉刷新同事从在怎么回调数据
注意事项:
1、XListView因为添加了Header,会导致存储的数据+1,所以赋值时需要position-1。补充:当去掉HeaderView时,position不用-1。
2、提个建议:上拉加载更多,最好在onCreate()中就执行setAdapter,然后不论是空数据、还是有数据,只用更新适配器就行了。
一、XListView
1、下载
gitHub的地址。或者从这儿下。
2、用法
导入图中的me.maxwin.view包
提供了两个接口:
IXListViewListener:触发下拉刷新,上拉加载更多。实现此接口时,onLoadMore()用来上拉加载更多,onRefresh()用来下拉刷新。
OnXScrollListener:和原生的OnScrollListener一样,但是在header/footer回滚时也会触发。
几个常用方法:
setPullRefreshEnable(boolean enable):是否允许下拉刷新
setPullLoadEnable(boolean enable):是否允许上拉加载更多
stopRefresh():停止刷新,重置header view
stopLoadMore():停止加载更多,重置footer view
请求到数据后停止刷新停止加载更多。
setRefreshTime(String time):设置上次刷新的时间
onLoadMore():加载更多时调用的方法。注意第一次进入时不会调用此方法。
onRefresh():下拉刷新时调用的方法。
3、代码中怎么体现
1)实现IXListViewListener接口->2)实现上拉刷新和下拉加载更多的数据变更->3)更新header view和footer view,并设置更新时间。
[java] view plain
//1、实现IXListViewListener接口
mListView.setXListViewListener(this);
//2.1 onRefresh中实现下拉刷新的数据加载
@Override
public void onRefresh() {
//请求数据
//更新界面显示
[java] view plain
onLoad();
}//2.2 onLoadMore中实现上拉加载更多的数据加载
[java] view plain
@Override
public void onLoadMore() {
//请求数据
//更新界面显示
[java] view plain
onLoad();
}//3、加载完数据后,复位header view和footer view,并设置更新的时间。
[java] view plain
private void onLoad() {
mListView.stopRefresh();mListView.stopLoadMore();
mListView.setRefreshTime("刚刚");
}
4、xml注意事项
当将XListView嵌入到LinearLayout中时,XListView占满全屏时不能再加载更多。上错误代码:
[java] view plain
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/takemain_ll"
android:layout_below="@id/takemain_l"
android:orientation="vertical" >
<cn.bestbang.rable_consumer_goods.utils.MyExXListView
android:id="@+id/home_list"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</cn.bestbang.rable_consumer_goods.utils.MyExXListView>
</LinearLayout>
5、去ScrollView共用
这种情况,重写XListView会导致上拉加载时频繁的报错:适配器未更新,不知道咋解决。
二、PullToRefresh
大部分内容转自鸿洋的博客:http://blog.csdn.net/lmj623565791/article/details/38238749
1、整体了解:
首先,github上的这个控件:pull-to-refresh,例子中的功能非常强大,可不止支持ListView和GridView。在下载前,先说下项目结构。github上下载的例子,是依赖于三个项目的,一个基本的library_pullToRefresh(自己要引用到的项目。怎么引用?自己的项目右键->Properties->Android,在Is Library中选择路径),一个基本的PullToRefreshViewPager,一个PullToRefreshListFragment。
2、用法
1)设置PullToRefreshListView支持上拉加载和下拉刷新->2)初始化控件,设置适配器->3)设置监听事件。在监听事件中处理上拉加载更多和下拉刷新,设置最后更新的时间。
[java] view plain
<pre name="code" class="java"><pre name="code" class="java">//1、支持上拉加载和下拉刷新
mPullRefreshListView.setMode(Mode.BOTH);
//2、设置适配器 mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mListItems); mPullRefreshListView.setAdapter(mAdapter); //3、设置监听器mPullRefreshListView.setOnRefreshListener(new OnRefreshListener2<ListView>(){ @Override public void onPullDownToRefresh( PullToRefreshBase<ListView> refreshView){ // 显示最后更新的时间 refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label); //这里写下拉刷新的任务 new GetDataTask().execute(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView){ // 显示最后更新的时间 refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
[java] view plain
//这里写上拉加载更多的任务
new GetDataTask().execute(); } });
3、属性介绍
1)ptr:ptrMode="both"支持上拉加载和下拉刷新。disabled禁用下拉刷新和上拉加载。pullFromEnd仅支持上拉加载。manualOnly只允许手动触发。当然通过代码也可设置:lv.setMode(Mode.BOTH);
2)ptr:trAnimationStyle="flip" flip:翻转动画;rotate:旋转动画。
3)ptr:ptrDrawable="@drawable/ic_launcher"设置图标
4)刷新的时候,是否允许ListView或GridView滚动。觉得为true比较好。5)ptrListViewExtrasEnabled 决定了Header,Footer以何种方式加入mPullRefreshListView,true为headView方式加入,就是滚动时刷新头部会一起滚动。
4、自定义下拉指示器文本内容等效果:
在初始化完成PullToRefreshListView后,通过lv.getLoadingLayoutProxy()可得到一个ILoadingLayout对象,这个对象可设置各种指示器中的样式、文本等。
[java] view plain
ILoadingLayout startLabels = mPullRefreshListView
.getLoadingLayoutProxy();
startLabels.setPullLabel("你可劲拉,拉...");// 刚下拉时,显示的提示
startLabels.setRefreshingLabel("好嘞,正在刷新...");// 刷新时
startLabels.setReleaseLabel("你敢放,我就敢刷新...");// 下来达到一定距离时,显示的提示
默认是上拉和下拉的字同时改变的,如果希望单独改变呢:
[java] view plain
private void initIndicator(){
ILoadingLayout startLabels = mPullRefreshListView
.getLoadingLayoutProxy(true, false);
startLabels.setPullLabel("你可劲拉,拉...");// 刚下拉时,显示的提示
startLabels.setRefreshingLabel("好嘞,正在刷新...");// 刷新时
startLabels.setReleaseLabel("你敢放,我就敢刷新...");// 下来达到一定距离时,显示的提示
ILoadingLayout endLabels = mPullRefreshListView.getLoadingLayoutProxy(
false, true);
endLabels.setPullLabel("你可劲拉,拉2...");// 刚下拉时,显示的提示
endLabels.setRefreshingLabel("好嘞,正在刷新2...");// 刷新时
endLabels.setReleaseLabel("你敢放,我就敢刷新2...");// 下来达到一定距离时,显示的提示
}
‘叁’ android viewpager 数据如何刷新 呢
ViewPager的数据是通过PageAdapter来装载的,刷新数据的方法有以下:
调用adapter.notifyDataSetChanged(); 刷新控件,但是要覆盖PagerAdapter的getItemPosition方法,并返回return POSITION_NONE;
利用PagerAdapter的工作机制,就是PagerAdapter的执行顺序,PagerAdapter作为ViewPager的适配器,无论ViewPager有多少页,PagerAdapter在初始化时也只初始化开始的2个View,即调用2次instantiateItem方法。而接下来每当ViewPager滑动时,PagerAdapter都会调用destroyItem方法将距离该页2个步幅以上的那个View销毁,以此保证PagerAdapter最多只管辖3个View,且当前View是3个中的中间一个,如果当前View缺少两边的View,那么就instantiateItem,如里有超过2个步幅的就destroyItem。
每当Adapter调用instantiateItem时,运用View.setTag方法将该View标识。当需要更新这个View的数据时,通过调用ViewPager.findViewWithTag方法找到相应的View,然后更新View中的数据。
‘肆’ Android UI刷新机制
Android屏幕的刷新包含3个步骤:CPU计算屏幕数据、GPU进一步处理和缓存、最后屏幕(Display)再从缓存中把计算的屏幕数据显示出来
对于 Android 而言,第一个步骤搜纳: CPU 计算屏幕数据 指的也就是 View 树的绘制过程,也就是 Activity 对应的视图树从根布局 DecorView 开始层层遍历每个 View,分别执行测量、布局、绘制三个操作的过程。我们重点分析的也是这个步骤,关于后续的2个步骤我们可以理解为底层处理,没必要过于深入。
我们知道Android每隔16.6ms会发送一次垂直同步VSync信息量,1S也就是60帧的画面。下面这个图蓝色的是CPU计算屏幕数据时间戳,绿色的是GPU的处理,最后黄色的是屏幕。我们可以清楚的看到,每帧的画面都会提前一帧去计算以及GPU处理。
如果我们保持页面静止,那梁橡么Android还是会16.6ms发送一次垂直同步信号量,App这个时候接受不到屏幕刷新的信号。所以也就不会让 CPU 去计算下一帧画面数据,但是底层仍然会以固定的频率来切换每一帧的画面,只是它后面切换的每一帧画面都一样,所以给我们的感觉就是屏幕没刷新
我们世渣没都知道Android的刷新离不开ViewRootImpl,在上一篇文章 《Android中UI的绘制流程》 中,大致阐述了Android的UI刷新流程。这里我们进一步深入的理解源码,以及刷新UI的详细流程。首先看图:
‘伍’ android 下拉刷新加载最新数据如何实现
下拉刷新一般都是用在listView组件中,给listView添加listHeadView自定义组件,即com.example.pulltorefreshtest.RefreshableView
在activity中取则型得自定义的组件listHeadVIew,
给自定义组件添加事件
在Activity中调用RefreshableView的setOnRefreshListener方法注册回调接口
在onRefresh方法的最后,记得调用RefreshableView的finishRefreshing方高睁法,通知刷孙念猜新结束。
‘陆’ Android 下拉刷新, 如图所示的这种效果,我总觉得这是最新的sdk提供的,不过android
这不是通知栏这是下拉刷新。
‘柒’ android数据库更新后怎样刷新listview数据
重写onStart(),在里面加上getData()即可,也就是每次进入这个页面就刷新数据
‘捌’ android往数据库添加数据后刷新列表,新数据无法显示
我通常的做法是,自己写adapter继承于BaseAdapter,然后加一个setData的公开方法。
在activity中可以开启一个线程去取数据,取完数据调用handler对listView进行加载或刷新。
如果是加载就new
MyAdapter,listView.setAdapter
如果是刷新就adapter.setData(),
adapter.notifyDataSetChanged().
有不懂再问。
‘玖’ android listview 怎么刷新所有数据
所谓的刷新说白了就是从新加载一遍数据,然后从新放在控件上,所以你就找的地方从新加载一遍数据就好了啊,重新走一遍获取数据的方法