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);
}

}


}
原创粉丝点击