HttpUtils和XlistView
2016-07-28 19:28
381 查看
主页面是四个RadioButton和ViewPager的滑动切换
public class MainPagerActivity extends FragmentActivity {
private TextView mTextView;
private ImageView mImageView;
private RadioGroup rg;
private ViewPager mViewPager;
private List<Fragment> mList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_pager);
//初始化
initView();
//添加Fragment
addFragment();
//给ViewPager适配
mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public int getCount() {
return mList.size();
}
@Override
public Fragment getItem(int arg0) {
return mList.get(arg0);
}
});
//ViewPager滑动上边标题跟着滑动监听
mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
for (int i = 0; i < mList.size(); i++) {
RadioButton rb = (RadioButton) rg.getChildAt(i);
if (i == arg0) {
rb.setChecked(true);
rb.setTextColor(Color.GREEN);
} else {
rb.setChecked(false);
rb.setTextColor(Color.BLACK);
}
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
//点击RadioButton得到相应的Fragment
rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.rb1:
mViewPager.setCurrentItem(0);
break;
case R.id.rb2:
mViewPager.setCurrentItem(1);
break;
case R.id.rb3:
mViewPager.setCurrentItem(2);
break;
case R.id.rb4:
mViewPager.setCurrentItem(3);
break;
}
}
});
}
private void addFragment() {
mList = new ArrayList<Fragment>();
Fragment01 f1 = new Fragment01();
Fragment02 f2 = new Fragment02();
Fragment03 f3 = new Fragment03();
Fragment04 f4 = new Fragment04();
mList.add(f1);
mList.add(f2);
mList.add(f3);
mList.add(f4);
}
private void initView() {
mTextView = (TextView) findViewById(R.id.tv_qqname);
mImageView = (ImageView) findViewById(R.id.iv_touxiang);
rg = (RadioGroup) findViewById(R.id.rg);
mViewPager = (ViewPager) findViewById(R.id.vp);
}
}
Fragment里边用XlistView显示上拉加载下拉刷新
public class Fragment01 extends Fragment implements IXListViewListener {
private XListView xListView;
private String path = "http://www.oschina.net/action/api/news_list?catalog=1&pageSize=10&pageIndex=";
Boolean bool = true;
int j = 1;
Myadapter adapter;
List<News> list;
private String str;
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
if (msg.what == 1) {
//上啦加载
adapter.changUp(list);
} else if (msg.what == 2) {
//下拉刷新
adapter.changDown(list);
}
};
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment01, container, false);
xListView = (XListView) v.findViewById(R.id.lv);
str = path + 1;
//加载数据
getpull();
//适配器
adapter = new Myadapter(getActivity());
xListView.setAdapter(adapter);
//设置xListView的监听
xListView.setXListViewListener(this);
//设置可刷新
xListView.setPullRefreshEnable(true);
//设置可加载
xListView.setPullLoadEnable(true);
return v;
}
private void getpull() {
//请求网络数据
new Thread() {
public void run() {
HttpUtils httpUtils = new HttpUtils();
httpUtils.send(HttpMethod.GET, str, new RequestCallBack<String>() {
// 失败
@Override
public void onFailure(HttpException arg0, String arg1) {
// TODO Auto-generated method stub
System.out.println("解析失败");
}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
// TODO Auto-generated method stub
String xml = arg0.result;
InputStream inputStream = new ByteArrayInputStream(xml.getBytes());
//解析Xml
getpulllll(inputStream);
//判断是加载还是刷新
if (bool == true) {
//刷新
handler.sendEmptyMessage(1);
} else {
//加载
handler.sendEmptyMessage(2);
}
}
});
}
}.start();
}
//解析Xml文件
private void getpulllll(InputStream inputStream) {
try {
XmlPullParser newPullParser = Xml.newPullParser();
newPullParser.setInput(inputStream, "utf-8");
News n = null;
int eventType = newPullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
list = new ArrayList<News>();
break;
case XmlPullParser.START_TAG:
if ("news".equalsIgnoreCase(newPullParser.getName())) {
n = new News();
} else if ("title".equalsIgnoreCase(newPullParser.getName())) {
n.setTitle(newPullParser.nextText());
} else if ("body".equalsIgnoreCase(newPullParser.getName())) {
n.setBody(newPullParser.nextText());
}else if ("author".equalsIgnoreCase(newPullParser.getName())) {
n.setAuthor(newPullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
if ("news".equalsIgnoreCase(newPullParser.getName())) {
list.add(n);
n = null;
}
break;
}
eventType = newPullParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
}
//刷新监听
@Override
public void onRefresh() {
str = path + 1;
bool = true;
getpull();
onLoad();
}
//加载监听
@Override
public void onLoadMore() {
j++;
str = path + j;
bool = false;
getpull();
onLoad();
}
//关闭上啦加载下拉刷新
private void onLoad() {
xListView.stopRefresh();
xListView.stopLoadMore();
xListView.setRefreshTime("刚刚");
}
}
XlistView的适配器
public class Myadapter extends BaseAdapter {
Context context;
List<News> list = new ArrayList<News>();
public Myadapter(Context context) {
super();
this.context = context;
}
public void changUp(List<News> blist) {
this.list.clear();
this.list.addAll(0, blist);
this.notifyDataSetChanged();
}
public void changDown(List<News> blist) {
this.list.addAll(blist);
this.notifyDataSetChanged();
}
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = View.inflate(context, R.layout.item, null);
}
TextView tilte = (TextView) convertView.findViewById(R.id.title);
TextView body = (TextView) convertView.findViewById(R.id.body);
TextView author = (TextView) convertView.findViewById(R.id.author);
tilte.setText(list.get(position).getTitle());
body.setText(list.get(position).getBody());
author.setText(list.get(position).getAuthor());
return convertView;
}
}
public class MainPagerActivity extends FragmentActivity {
private TextView mTextView;
private ImageView mImageView;
private RadioGroup rg;
private ViewPager mViewPager;
private List<Fragment> mList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_pager);
//初始化
initView();
//添加Fragment
addFragment();
//给ViewPager适配
mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public int getCount() {
return mList.size();
}
@Override
public Fragment getItem(int arg0) {
return mList.get(arg0);
}
});
//ViewPager滑动上边标题跟着滑动监听
mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
for (int i = 0; i < mList.size(); i++) {
RadioButton rb = (RadioButton) rg.getChildAt(i);
if (i == arg0) {
rb.setChecked(true);
rb.setTextColor(Color.GREEN);
} else {
rb.setChecked(false);
rb.setTextColor(Color.BLACK);
}
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
//点击RadioButton得到相应的Fragment
rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.rb1:
mViewPager.setCurrentItem(0);
break;
case R.id.rb2:
mViewPager.setCurrentItem(1);
break;
case R.id.rb3:
mViewPager.setCurrentItem(2);
break;
case R.id.rb4:
mViewPager.setCurrentItem(3);
break;
}
}
});
}
private void addFragment() {
mList = new ArrayList<Fragment>();
Fragment01 f1 = new Fragment01();
Fragment02 f2 = new Fragment02();
Fragment03 f3 = new Fragment03();
Fragment04 f4 = new Fragment04();
mList.add(f1);
mList.add(f2);
mList.add(f3);
mList.add(f4);
}
private void initView() {
mTextView = (TextView) findViewById(R.id.tv_qqname);
mImageView = (ImageView) findViewById(R.id.iv_touxiang);
rg = (RadioGroup) findViewById(R.id.rg);
mViewPager = (ViewPager) findViewById(R.id.vp);
}
}
Fragment里边用XlistView显示上拉加载下拉刷新
public class Fragment01 extends Fragment implements IXListViewListener {
private XListView xListView;
private String path = "http://www.oschina.net/action/api/news_list?catalog=1&pageSize=10&pageIndex=";
Boolean bool = true;
int j = 1;
Myadapter adapter;
List<News> list;
private String str;
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
if (msg.what == 1) {
//上啦加载
adapter.changUp(list);
} else if (msg.what == 2) {
//下拉刷新
adapter.changDown(list);
}
};
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment01, container, false);
xListView = (XListView) v.findViewById(R.id.lv);
str = path + 1;
//加载数据
getpull();
//适配器
adapter = new Myadapter(getActivity());
xListView.setAdapter(adapter);
//设置xListView的监听
xListView.setXListViewListener(this);
//设置可刷新
xListView.setPullRefreshEnable(true);
//设置可加载
xListView.setPullLoadEnable(true);
return v;
}
private void getpull() {
//请求网络数据
new Thread() {
public void run() {
HttpUtils httpUtils = new HttpUtils();
httpUtils.send(HttpMethod.GET, str, new RequestCallBack<String>() {
// 失败
@Override
public void onFailure(HttpException arg0, String arg1) {
// TODO Auto-generated method stub
System.out.println("解析失败");
}
@Override
public void onSuccess(ResponseInfo<String> arg0) {
// TODO Auto-generated method stub
String xml = arg0.result;
InputStream inputStream = new ByteArrayInputStream(xml.getBytes());
//解析Xml
getpulllll(inputStream);
//判断是加载还是刷新
if (bool == true) {
//刷新
handler.sendEmptyMessage(1);
} else {
//加载
handler.sendEmptyMessage(2);
}
}
});
}
}.start();
}
//解析Xml文件
private void getpulllll(InputStream inputStream) {
try {
XmlPullParser newPullParser = Xml.newPullParser();
newPullParser.setInput(inputStream, "utf-8");
News n = null;
int eventType = newPullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
list = new ArrayList<News>();
break;
case XmlPullParser.START_TAG:
if ("news".equalsIgnoreCase(newPullParser.getName())) {
n = new News();
} else if ("title".equalsIgnoreCase(newPullParser.getName())) {
n.setTitle(newPullParser.nextText());
} else if ("body".equalsIgnoreCase(newPullParser.getName())) {
n.setBody(newPullParser.nextText());
}else if ("author".equalsIgnoreCase(newPullParser.getName())) {
n.setAuthor(newPullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
if ("news".equalsIgnoreCase(newPullParser.getName())) {
list.add(n);
n = null;
}
break;
}
eventType = newPullParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
}
//刷新监听
@Override
public void onRefresh() {
str = path + 1;
bool = true;
getpull();
onLoad();
}
//加载监听
@Override
public void onLoadMore() {
j++;
str = path + j;
bool = false;
getpull();
onLoad();
}
//关闭上啦加载下拉刷新
private void onLoad() {
xListView.stopRefresh();
xListView.stopLoadMore();
xListView.setRefreshTime("刚刚");
}
}
XlistView的适配器
public class Myadapter extends BaseAdapter {
Context context;
List<News> list = new ArrayList<News>();
public Myadapter(Context context) {
super();
this.context = context;
}
public void changUp(List<News> blist) {
this.list.clear();
this.list.addAll(0, blist);
this.notifyDataSetChanged();
}
public void changDown(List<News> blist) {
this.list.addAll(blist);
this.notifyDataSetChanged();
}
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = View.inflate(context, R.layout.item, null);
}
TextView tilte = (TextView) convertView.findViewById(R.id.title);
TextView body = (TextView) convertView.findViewById(R.id.body);
TextView author = (TextView) convertView.findViewById(R.id.author);
tilte.setText(list.get(position).getTitle());
body.setText(list.get(position).getBody());
author.setText(list.get(position).getAuthor());
return convertView;
}
}
相关文章推荐
- TCP的状态 (SYN, FIN, ACK, PSH, RST, URG)
- http协议(六)报文首部
- HttpURLConnection+AsyncTask+接口回调实现简易get联网请求封装框架
- Android Https请求详细demo
- 轻松把玩HttpClient之设置代理,可以访问FaceBook
- 轻松把玩HttpAsyncClient之模拟post请求示例
- 轻松把玩HttpClient之封装HttpClient工具类(七),新增验证码识别功能
- 轻松把玩HttpClient之封装HttpClient工具类(六),封装输入参数,简化工具类
- 轻松把玩HttpClient之封装HttpClient工具类(五),携带Cookie的请求
- 轻松把玩HttpClient之封装HttpClient工具类(四),单线程调用及多线程批量调用测试
- 轻松把玩HttpClient之封装HttpClient工具类(三),插件式配置Header
- 轻松把玩HttpClient之封装HttpClient工具类(二),插件式配置HttpClient对象
- 轻松把玩HttpClient之封装HttpClient工具类(一)(现有网上分享中的最强大的工具类)
- iOS开发之--iOS网络请求错误码。
- 深入探究Android的WebView下载网络文件的盗链问题
- 神经网络基础算法
- httpclient4 取得cookie信息并保存
- HttpClient模拟浏览器登录后发起请求(携带Cookie发请求)
- GCDAsyncSocket使用
- okhttp3.x的post请求