Java文件:
MainActivity:
package com.sdut.testadapter;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.RequestParams;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MainActivity extends Activity {
ProgressDialog progressDialog;
ListView listView;
Button button;
Button buttonJson,btnDown;
Handler handler;
ArrayList<HashMap<String, String>> listData;
String[] data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
initView();
data=getArrayData();
listData=getListData();
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
String[] fromKey={"xh","xm"};
int[] toID={R.id.txtXh,R.id.txtXm};
SimpleAdapter adapter2=new SimpleAdapter(this, listData, R.layout.listdata_layout,fromKey,toID);
MyBaseAdapter adapter3=new MyBaseAdapter(this, listData);
listView.setAdapter(adapter3);
handler=new Handler(){
@Override
public void handleMessage(Message msg) {
// 接收线程传回来的Message
switch (msg.what) {
case 1:
progressDialog.dismiss();
Bundle bundle=msg.getData();
String str=bundle.getString("version");
VersionEntity entity=Tools.VersionJson(str);
Toast.makeText(getApplicationContext(), "发现新版本:"+entity.getVerMem(), 1).show();
break;
default:
break;
}
super.handleMessage(msg);
}
};
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
progressDialog.show();
//开始执行查询 XUtils.jar
HttpUtils httpUtils=new HttpUtils();
String url="http://ws.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getStationAndTimeByStationName";
RequestParams params=new RequestParams();
params.addBodyParameter("StartStation", "淄博");
params.addBodyParameter("ArriveStation", "威海");
params.addBodyParameter("UserID", "");
params.addBodyParameter("Content-Type", "application/x-www-form-urlencoded");
httpUtils.send(HttpMethod.POST, url, params, new RequestCallBack<String>() {
@Override
public void onFailure(HttpException arg0, String arg1) {
//网络连接失败
progressDialog.dismiss();
Toast.makeText(MainActivity.this, "网络错误", Toast.LENGTH_LONG).show();
}
@Override
public void onSuccess(ResponseInfo<String> response) {
progressDialog.dismiss();
String reuslt=response.result;
Log.d("result", reuslt);
ArrayList<HashMap<String, String>> list=Tools.pullTrainTimeTable(reuslt);
Log.d("listsize", ""+list.size());
String[] fromKey={"TrainCode","FirstStation","LastStation","StartStation","StartTime","ArriveStation","ArriveTime"};
int[] toID={R.id.txtTrainCode,R.id.txtFirstStation,R.id.txtLastStation,R.id.txtStartStation,R.id.txtStartTime,R.id.txtArriveStation,R.id.txtArriveTime};
SimpleAdapter adapter=new SimpleAdapter(MainActivity.this, list, R.layout.trainitem_layout, fromKey, toID);
listView.setAdapter(adapter);
Toast.makeText(MainActivity.this, "车次数量:"+list.size(), Toast.LENGTH_LONG).show();
}
});
}
});
buttonJson.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
progressDialog.show();
GetJsonVersion getJsonVersion=new GetJsonVersion();
getJsonVersion.start();
// String s="{VersionName:V2.0,VersionCode:10,VersionMem:本次升级优化了系统性能.2017-9-4,ApkUrl:sjws.apk}";
// VersionEntity entity=Tools.VersionJson(s);
// Toast.makeText(getApplicationContext(), "有新版本:"+entity.getVerMem(), 1).show();
}
});
btnDown.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
HttpUtils httpUtils=new HttpUtils();
String url="http://210.44.176.42/kaoshi/apkupdate/sjws.apk";
String saveTo=Environment.getExternalStorageDirectory().getAbsolutePath()+"//sjws.apk";
httpUtils.download(url, saveTo, new RequestCallBack<File>() {
@Override
public void onSuccess(ResponseInfo<File> response) {
// 下载成功
File file= response.result;
Toast.makeText(getApplicationContext(), file.getAbsolutePath(), 1).show();
}
@Override
public void onLoading(long total, long current,
boolean isUploading) {
// 下载过程中...
super.onLoading(total, current, isUploading);
}
@Override
public void onFailure(HttpException arg0, String arg1) {
//网络错误
}
});
}
});
// String xmlStr="<root><VersionCode>20</VersionCode><ApkUrl>sjws.apk</ApkUrl><VersionMem>增加了在线更新功能</VersionMem><VersionName>Ver1.2</VersionName></root>";
// HashMap<String, String> map= Tools.pullVersionXml(xmlStr);
// Toast.makeText(this, map.get("VersionCode")+map.get("VersionMem"), 1).show();
}
protected void initView() {
progressDialog=new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setTitle("正在读取");
progressDialog.setMessage("请稍等...");
progressDialog.setCancelable(false);
button=(Button) findViewById(R.id.btnSearch);
btnDown=(Button) findViewById(R.id.btnDown);
buttonJson=(Button) findViewById(R.id.btnJson);
listView=(ListView) findViewById(R.id.myList);
}
protected ArrayList<HashMap<String, String>> getListData() {
ArrayList<HashMap<String, String>> list=new ArrayList<HashMap<String,String>>();
for(int i=0;i<20;i++){
HashMap<String, String> map=new HashMap<String, String>();
map.put("xh", "xh--"+i);
map.put("xm", "xm--"+i);
list.add(map);
}
return list;
}
protected String[] getArrayData() {
String[] data=new String[20];
for(int i=0;i<data.length;i++){
data[i]="data"+i;
}
return data;
}
class GetJsonVersion extends Thread{
@Override
public void run() {
String str="http://210.44.176.42/kaoshi/apkupdate/updatejson.html";
try {
URL url=new URL(str);
InputStream in= url.openStream();
// Environment.getExternalStorageDirectory();
BufferedReader br=new BufferedReader(new InputStreamReader(in));
String result="";
String tmpS=br.readLine();
while(tmpS!=null){
result=result+tmpS;
tmpS=br.readLine();
}
Bundle data=new Bundle();
data.putString("version", result);
Message msg=new Message();
msg.what=1;
msg.setData(data);
handler.sendMessage(msg);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.run();
}
}
}
MyBaseAdapter:
package com.sdut.testadapter;
import java.util.ArrayList;
import java.util.HashMap;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class MyBaseAdapter extends BaseAdapter{
ArrayList<HashMap<String, String>> list;
Context context;
public MyBaseAdapter(Context context,ArrayList<HashMap<String, String>> list){
this.context=context;
this.list=list;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int pos) {
// TODO Auto-generated method stub
return list.get(pos);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int pos, View view, ViewGroup arg2) {
// TODO Auto-generated method stub
HashMap<String, String> map=list.get(pos);
ViewHolder holder;
if(view==null){
holder=new ViewHolder();
view=LayoutInflater.from(context).inflate(R.layout.listdata_layout,null);
holder.txtxh=(TextView) view.findViewById(R.id.txtXh);
holder.txtxm=(TextView) view.findViewById(R.id.txtXm);
view.setTag(holder);
}else{
holder=(ViewHolder) view.getTag();
}
holder.txtxh.setText("MyBaseAdapter"+map.get("xh"));
holder.txtxm.setText(map.get("xm"));
return view;
}
static class ViewHolder{
TextView txtxh;
TextView txtxm;
}
}
MyPagerAdapter:
package com.sdut.testadapter;
import java.util.ArrayList;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
public class MyPagerAdapter extends PagerAdapter {
ArrayList<View> arrayList=new ArrayList<View>();
public MyPagerAdapter(ArrayList<View> arrayList){
this.arrayList=arrayList;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return arrayList.size();
}
@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) {
// TODO Auto-generated method stub
container.removeView(arrayList.get(position));
// super.destroyItem(container, position, object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
container.addView(arrayList.get(position));
return arrayList.get(position);
// return super.instantiateItem(container, position);
}
}
Tools:
package com.sdut.testadapter;
import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import java.util.HashMap;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.util.Log;
import android.util.Xml;
public class Tools {
//{VersionName:V2.0,VersionCode:10,VersionMem:本次升级优化了系统性能.2017-9-4,ApkUrl:sjws.apk}
public static ArrayList<HashMap<String, String>> StuJson(String str) {
ArrayList<HashMap<String, String>> list=new ArrayList<HashMap<String,String>>();
HashMap<String, String> map=new HashMap<String, String>();
try {
JSONArray jsonArray=new JSONArray(str);
for(int i=0;i<jsonArray.length();i++){
JSONObject obj=jsonArray.getJSONObject(i);
map=new HashMap<String, String>();
map.put("xm", obj.getString("xm"));
map.put("bj", obj.getString("bj"));
list.add(map);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
public static VersionEntity VersionJson(String str) {
VersionEntity entity=new VersionEntity();
try {
JSONObject jsonObject=new JSONObject(str);
String name=jsonObject.getString("VersionName");
String code=jsonObject.getString("VersionCode");
String mem=jsonObject.getString("VersionMem");
String apkurl=jsonObject.getString("ApkUrl");
entity.setVerName(name);
entity.setVerCode(code);
entity.setVerMem(mem);
entity.setVerUrl(apkurl);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return entity;
}
public static ArrayList<HashMap<String, String>> pullTrainTimeTable(String str) {
ArrayList<HashMap<String, String>> list=new ArrayList<HashMap<String,String>>();
HashMap<String, String> map=new HashMap<String, String>();
XmlPullParser parser=Xml.newPullParser();
ByteArrayInputStream in=new ByteArrayInputStream(str.getBytes());
try {
parser.setInput(in,null);
int eventType=parser.getEventType();
while(eventType!=XmlPullParser.END_DOCUMENT){
if(eventType==XmlPullParser.START_TAG){
String tagname=parser.getName();
Log.d("tagName", tagname);
if(tagname.equals("TimeTable")){
map=new HashMap<String, String>();
}
if(tagname.equals("TrainCode")){
map.put("TrainCode", parser.nextText());
}
if(tagname.equals("FirstStation")){
map.put("FirstStation", parser.nextText());
}
if(tagname.equals("LastStation")){
map.put("LastStation", parser.nextText());
}
if(tagname.equals("StartStation")){
map.put("StartStation", parser.nextText());
}
if(tagname.equals("StartTime")){
map.put("StartTime", parser.nextText());
}
if(tagname.equals("ArriveTime")){
map.put("ArriveTime", parser.nextText());
}
if(tagname.equals("ArriveStation")){
map.put("ArriveStation", parser.nextText());
}
}
if(eventType==XmlPullParser.END_TAG){
if(parser.getName().equals("TimeTable")){
list.add(map);
}
}
eventType=parser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
// <root>
// <VersionCode>20</VersionCode>
// <VersionMem>增加了在线更新功能</VersionMem>
// <VersionName>Ver1.2</VersionName>
// <ApkUrl>sjws.apk</ApkUrl>
// </root>
public static HashMap<String, String> pullVersionXml(String str) {
HashMap<String, String> map=new HashMap<String, String>();
ByteArrayInputStream in=new ByteArrayInputStream(str.getBytes());
XmlPullParser parser=Xml.newPullParser();
try {
parser.setInput(in, null);
int eventType= parser.getEventType();
while(eventType!=XmlPullParser.END_DOCUMENT){
if(eventType==XmlPullParser.START_TAG){
String tagName=parser.getName();
if(tagName.equals("VersionCode")){
map.put("VersionCode", parser.nextText());
}
if(tagName.equals("VersionMem")){
map.put("VersionMem", parser.nextText());
}
if(tagName.equals("VersionName")){
map.put("VersionName", parser.nextText());
}
if(tagName.equals("ApkUrl")){
map.put("ApkUrl", parser.nextText());
}
}
parser.next();
eventType= parser.getEventType();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return map;
}
}
VersionEntity:
package com.sdut.testadapter;
public class VersionEntity {
private String verName;
private String verCode;
private String verMem;
private String verUrl;
public String getVerName() {
return verName;
}
public void setVerName(String verName) {
this.verName = verName;
}
public String getVerCode() {
return verCode;
}
public void setVerCode(String verCode) {
this.verCode = verCode;
}
public String getVerMem() {
return verMem;
}
public void setVerMem(String verMem) {
this.verMem = verMem;
}
public String getVerUrl() {
return verUrl;
}
public void setVerUrl(String verUrl) {
this.verUrl = verUrl;
}
}
ViewFlipperActivity:
package com.sdut.testadapter;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class ViewFlipperActivity extends Activity{
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
setContentView(R.layout.myflipper_layout);
viewPager=(ViewPager) findViewById(R.id.viewpager);
// FragmentActivity
// FragmentPagerAdapter
View view=LayoutInflater.from(this).inflate(R.layout.activity_main, null);
TextView textView=new TextView(this);
textView.setText("看看第一个");
Button button=new Button(this);
button.setText("这是第二个");
ArrayList<View> arrayList=new ArrayList<View>();
arrayList.add(button);
arrayList.add(textView);
arrayList.add(view);
MyPagerAdapter adapter=new MyPagerAdapter(arrayList);
viewPager.setAdapter(adapter);
Toast.makeText(this,""+viewPager.getChildCount(),1).show();
super.onCreate(savedInstanceState);
}
}
布局文件:
activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ViewFlipper
android:layout_width="match_parent"
android:layout_height="100dp"
android:autoStart="true"
android:flipInterval="2000">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@drawable/a"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@drawable/b"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@drawable/c"/>
</ViewFlipper>
<TextView
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="@string/hello_world" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btnSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/btnSeartchTxt"/>
<Button
android:id="@+id/btnJson"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/btnJsonTxt"/>
<Button
android:id="@+id/btnDown"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/btnDownTxt"/>
</LinearLayout>
<ListView
android:id="@+id/myList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:entries="@array/mingdan"></ListView>
</LinearLayout>
listdata_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/txtXh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<View
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/txtXm"
android:background="@color/hongse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
myflipper_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"/>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="200dp">
</android.support.v4.view.ViewPager>
</LinearLayout>
trainitem_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/txtTrainCode"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/txtFirstStation"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/txtLastStation"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/txtStartStation"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/txtStartTime"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/txtArriveStation"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/txtArriveTime"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
array.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="mingdan">
<item >qasdasdads</item>
<item >fghdfg</item>
<item >dfgdfgd</item>
<item >sdf</item>
<item >sdrt3453</item>
</string-array>
</resources>
注:权限设置AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.INTERNET"/>