消息列表的更新下拉条的实现
来源:互联网 发布:淘宝无线优惠券链接 编辑:程序博客网 时间:2024/06/08 14:14
当我们在浏览新闻客户端或社交网站时,通常都会有下拉更新消息,并显示有多少条消息更新,这个功能实际上是在Fragment里面重写setUserVisibleHint方法实现的,setUserVisibleHint这个方法是当前页面可见是的相关操作。当ViewPager中存在三个页面的时候,当默认是第一个页面,并且被打开。那么在我们的后台就会收集到用户打开两个页面的信息,通常是这个可见页面的左右两个页面。
而我们的设计思路就是先加载数据,加载结束后,显示更新条,并在两秒后消失。而这些的实现需要子线程把数据传递给Handler,然后在主线程里面根据消息队列的what属性判断是进行哪步操作,并执行相关的代码即可。
public class ListViewItemFragment extends Fragment {
private ListView listView;
private Context mContext;
private ImageView empty_view;
private TextView notify_view_text;
private RelativeLayout notify_view;
private int num=0;
private static final int SET_DATA=1;
private static final int SET_NOTIFY=2;
private ArrayList<NewsItem> data;
private Handler mHandler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case SET_DATA:
empty_view.setVisibility(View.GONE);
data = new ArrayList<NewsItem>();
NewsData newsData = new NewsData();
newsData.initData(data);
NewsItemAdapter adapter = new NewsItemAdapter(mContext, data);
listView.setAdapter(adapter);
break;
case SET_NOTIFY:
notify_view.setVisibility(View.VISIBLE);
notify_view_text.setVisibility(View.VISIBLE);
notify_view_text.setText("有数据更新");
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
notify_view.setVisibility(View.GONE);
}
},2000);
//notify_view.setVisibility(View.GONE);
break;
default:
break;
}
}
};
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.mContext=activity;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.article_list,null);
listView = (ListView)view.findViewById(R.id.listview);
empty_view=(ImageView)view.findViewById(R.id.empty_view);
notify_view=(RelativeLayout)view.findViewById(R.id.notify_view);
notify_view_text=(TextView)view.findViewById(R.id.notify_view_text);
return view;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser){
new Thread(new Runnable() {
@Override
public void run() {
Message msg=mHandler.obtainMessage(SET_DATA);
mHandler.sendMessage(msg);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
NotifyThread thread=new NotifyThread();
thread.start();
}
}
public class NotifyThread extends Thread{
@Override
public void run() {
num=1;
Message msg=mHandler.obtainMessage(SET_NOTIFY,num);
mHandler.sendMessage(msg);
}
}
}
- 消息列表的更新下拉条的实现
- 运用json和jQuery实现下拉列表的动态更新
- js更新下拉列表select的值
- 二级下拉列表的实现
- 二级下拉列表的实现
- ALV 下拉列表的实现
- 下拉刷新列表的实现
- 级联下拉列表的实现
- 写一个函数实现根据下拉列表的变化,更新图片显示
- 带多选框的下拉列表的实现
- 下拉列表的左右选择的实现
- 下拉列表和滚动条等无法显示的问题
- 高仿QQ聊天消息列表的下拉刷新效果
- 实现有下拉列表的文本框
- JavaScript实现下拉列表的级联
- 实现google的下拉列表效果
- js+div实现的下拉列表
- 实现下拉列表的分级显示
- MHA+非root用户SSH等效性配置
- 记一次lnmp下安装https的经过
- 做好移动开发需要的几个能力
- HDU-4841 圆桌问题 STL模拟约瑟夫问题
- win32编程 C++ 九格拼图游戏
- 消息列表的更新下拉条的实现
- Android入门环境搭建
- Oracle webcenter装配配置使用
- NTP - UDP 123
- C#文件流操作
- js中几种方法的使用总结
- 2014湘潭邀请赛 C题 湘大OJ 1205 Range (单调栈)
- Gvim常用操作
- [leetcode] Anagrams