ViewPager,XListView主Activity
来源:互联网 发布:ansible windows 编辑:程序博客网 时间:2024/06/06 12:41
public class MainActivity extends Activity {
XListView xlv;
NewsData nd;
MyAdapter adapter;
//viewpager相关变量
ViewPager vp;
List<ImageView> vpList;
View view;
MyPagerAdapter vpAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xlv = (XListView) findViewById(R.id.xlv);
initData();
adapter = new MyAdapter();
xlv.setAdapter(adapter);
xlv.setXListViewListener(new IXListViewListener() {
@Override
public void onRefresh() {
new AsyncTask<String, String, String>() {
@Override
protected String doInBackground(String... params) {
//获取指定网址的字符输入流
Reader reader = NetUtils.getDataByGet("https://news-at.zhihu.com/api/4/news/latest");
if(reader != null){
Gson gson = new Gson();
//得到javabean对象
nd = gson.fromJson(reader, NewsData.class);
}
return null;
}
protected void onPostExecute(String result) {
//刷新页面
adapter.notifyDataSetChanged();
xlv.stopRefresh();
};
}.execute();
}
@Override
public void onLoadMore() {
// new Handler().postAtTime(new Runnable() {
//
// @Override
// public void run() {
// Toast.makeText(MainActivity.this, "没有更多数据", 0).show();
// xlv.stopLoadMore();
// }
// }, 2000);
}
});
}
/**
* 该方法用来单独创建一个ViewPager的视图 添加在xListView的头布局中显示
* @return
*/
private View initViewPager() {
View view = View.inflate(MainActivity.this, R.layout.view_viewpager, null);
vp = (ViewPager) view.findViewById(R.id.vp);
//初始化VP要显示ImageView控件
initVPData();
vpAdapter = new MyPagerAdapter();
vp.setAdapter(vpAdapter);
final TextView tv = (TextView) view.findViewById(R.id.vp_tv);
if(nd != null){
tv.setText(nd.getTop_stories().get(0).getTitle());
}
//添加ViewPager监听 滑动时改变文本内容addOnPageChangeListener = setOnPageChangeListener
//add方法是新版本sdk更新的方法 跟set作用一致 因为set在新版本的sdk中是不推荐使用的方法
vp.addOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
tv.setText(nd.getTop_stories().get(arg0).getTitle());
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
return view;
}
/**
* 初始化ViewPager数据
*/
private void initVPData() {
vpList = new ArrayList<ImageView>();
if(nd != null){
for (int i = 0; i < nd.getTop_stories().size(); i++) {
ImageView iv = new ImageView(this);
iv.setScaleType(ScaleType.FIT_XY);
ImageLoader.getInstance().displayImage(nd.getTop_stories().get(i).getImage(), iv);
vpList.add(iv);
}
}
}
/**
* 加载数据库数据
* 加载网络数据
*
*/
private void initData() {
// getDBData();
//wifi判断 如果满足条件 进行网络加载
getNetData();
}
/**
* 获取网络数据
*/
private void getNetData() {
new AsyncTask<String, String, String>() {
@Override
protected String doInBackground(String... params) {
//获取指定网址的字符输入流
Reader reader = NetUtils.getDataByGet("https://news-at.zhihu.com/api/4/news/latest");
if(reader != null){
Gson gson = new Gson();
//得到javabean对象
nd = gson.fromJson(reader, NewsData.class);
}
return null;
}
protected void onPostExecute(String result) {
//刷新xlv页面
adapter.notifyDataSetChanged();
//显示Viewpager数据
view = initViewPager();
xlv.addHeaderView(view);
};
}.execute();
}
/**
* ListView适配器
* @author Administrator
*
*/
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
if(nd != null){
return nd.getStories().size();
}
return 0;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null){
convertView = View.inflate(MainActivity.this, R.layout.list_itme, null);
holder = new ViewHolder();
holder.xtv_title = (TextView) convertView.findViewById(R.id.xtv_title);
holder.xiv = (ImageView) convertView.findViewById(R.id.xiv);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.xtv_title.setText(nd.getStories().get(position).getTitle());
ImageLoader.getInstance().displayImage(nd.getStories().get(position).getImages().get(0), holder.xiv);
return convertView;
}
}
public static class ViewHolder{
ImageView xiv;
TextView xtv_title;
}
/**
* ViewPager适配器
* @author Administrator
*
*/
class MyPagerAdapter extends PagerAdapter{
@Override
public int getCount() {
if(nd != null){
return nd.getTop_stories().size();
}
return 0;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(vpList.get(position));
return vpList.get(position);
}
}
}
XListView xlv;
NewsData nd;
MyAdapter adapter;
//viewpager相关变量
ViewPager vp;
List<ImageView> vpList;
View view;
MyPagerAdapter vpAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xlv = (XListView) findViewById(R.id.xlv);
initData();
adapter = new MyAdapter();
xlv.setAdapter(adapter);
xlv.setXListViewListener(new IXListViewListener() {
@Override
public void onRefresh() {
new AsyncTask<String, String, String>() {
@Override
protected String doInBackground(String... params) {
//获取指定网址的字符输入流
Reader reader = NetUtils.getDataByGet("https://news-at.zhihu.com/api/4/news/latest");
if(reader != null){
Gson gson = new Gson();
//得到javabean对象
nd = gson.fromJson(reader, NewsData.class);
}
return null;
}
protected void onPostExecute(String result) {
//刷新页面
adapter.notifyDataSetChanged();
xlv.stopRefresh();
};
}.execute();
}
@Override
public void onLoadMore() {
// new Handler().postAtTime(new Runnable() {
//
// @Override
// public void run() {
// Toast.makeText(MainActivity.this, "没有更多数据", 0).show();
// xlv.stopLoadMore();
// }
// }, 2000);
}
});
}
/**
* 该方法用来单独创建一个ViewPager的视图 添加在xListView的头布局中显示
* @return
*/
private View initViewPager() {
View view = View.inflate(MainActivity.this, R.layout.view_viewpager, null);
vp = (ViewPager) view.findViewById(R.id.vp);
//初始化VP要显示ImageView控件
initVPData();
vpAdapter = new MyPagerAdapter();
vp.setAdapter(vpAdapter);
final TextView tv = (TextView) view.findViewById(R.id.vp_tv);
if(nd != null){
tv.setText(nd.getTop_stories().get(0).getTitle());
}
//添加ViewPager监听 滑动时改变文本内容addOnPageChangeListener = setOnPageChangeListener
//add方法是新版本sdk更新的方法 跟set作用一致 因为set在新版本的sdk中是不推荐使用的方法
vp.addOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
tv.setText(nd.getTop_stories().get(arg0).getTitle());
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
return view;
}
/**
* 初始化ViewPager数据
*/
private void initVPData() {
vpList = new ArrayList<ImageView>();
if(nd != null){
for (int i = 0; i < nd.getTop_stories().size(); i++) {
ImageView iv = new ImageView(this);
iv.setScaleType(ScaleType.FIT_XY);
ImageLoader.getInstance().displayImage(nd.getTop_stories().get(i).getImage(), iv);
vpList.add(iv);
}
}
}
/**
* 加载数据库数据
* 加载网络数据
*
*/
private void initData() {
// getDBData();
//wifi判断 如果满足条件 进行网络加载
getNetData();
}
/**
* 获取网络数据
*/
private void getNetData() {
new AsyncTask<String, String, String>() {
@Override
protected String doInBackground(String... params) {
//获取指定网址的字符输入流
Reader reader = NetUtils.getDataByGet("https://news-at.zhihu.com/api/4/news/latest");
if(reader != null){
Gson gson = new Gson();
//得到javabean对象
nd = gson.fromJson(reader, NewsData.class);
}
return null;
}
protected void onPostExecute(String result) {
//刷新xlv页面
adapter.notifyDataSetChanged();
//显示Viewpager数据
view = initViewPager();
xlv.addHeaderView(view);
};
}.execute();
}
/**
* ListView适配器
* @author Administrator
*
*/
class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
if(nd != null){
return nd.getStories().size();
}
return 0;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null){
convertView = View.inflate(MainActivity.this, R.layout.list_itme, null);
holder = new ViewHolder();
holder.xtv_title = (TextView) convertView.findViewById(R.id.xtv_title);
holder.xiv = (ImageView) convertView.findViewById(R.id.xiv);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.xtv_title.setText(nd.getStories().get(position).getTitle());
ImageLoader.getInstance().displayImage(nd.getStories().get(position).getImages().get(0), holder.xiv);
return convertView;
}
}
public static class ViewHolder{
ImageView xiv;
TextView xtv_title;
}
/**
* ViewPager适配器
* @author Administrator
*
*/
class MyPagerAdapter extends PagerAdapter{
@Override
public int getCount() {
if(nd != null){
return nd.getTop_stories().size();
}
return 0;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(vpList.get(position));
return vpList.get(position);
}
}
}
阅读全文
0 0
- ViewPager,XListView主Activity
- XListView+ViewPager
- Viewpager+XListView+Internet
- XListView+ViewPager+SQLite
- XListView+ PullToRefreshListView+ViewPager
- Viewpager+Fragment+Xlistview
- viewpager 与 Xlistview
- VIewPager+XListView+RadioButton实现布局
- ViewPager无限轮播加XListview加载
- XListView+ViewPager+上拉下拉
- viewpager+activity
- ViewPager+Activity
- fragment+Xlistview+viewpager无限轮播+imageloader
- ViewPager给图片加点事件和XListView
- json进行缓存+ViewPager+onRefresh+XlistView
- xlistview+Headview(viewpager自动带点轮播)+缓存
- XListView加头布局ViewPager轮播
- Horizontal+异步+pullTorefresh+viewPager+侧滑(XListView)
- 用开源代码构建机器人需要考虑的问题
- JavaScript中引用类型详解
- walle web部署系统工具踩坑
- 五、改进神经网络的学习方法(1):交叉熵代价函数
- 线段树简介
- ViewPager,XListView主Activity
- 事件深入应用一
- 【Real-Time Rendering 3rd】开坑的序章
- 大数据量下高并发同步的讲解
- 基于Android真实项目教你一步一步搭建架构1 -- 概述
- Java基础加强-读取配置文件和内省
- go语言安装第三方程序包
- kafka集群编程指南
- 二维数组中的查找