案例效果图:
请大家做好准备,一起来领会到安卓的奇妙之处,实现一个Listview页面
清单文件的配置:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.INTERNET"></uses-permission>
Listview每一条item的布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/image" android:background="@mipmap/ic_launcher"/> <TextView android:text="TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/image" android:layout_toEndOf="@+id/image" android:layout_marginLeft="90dp" android:layout_marginStart="90dp" android:id="@+id/textView" /> <TextView android:text="TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/image" android:layout_alignLeft="@+id/textView" android:layout_alignStart="@+id/textView" android:id="@+id/textView2" /> </RelativeLayout>
Activity布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.a13683.zhoukao1.MainActivity"> <ListView android:id="@+id/mylist" android:layout_width="match_parent" android:layout_height="match_parent"></ListView> </RelativeLayout>
解析字符串的类
public class Date { int dataSize; public List<ApkBean> apk; public int getDataSize() { return dataSize; } public void setDataSize(int dataSize) { this.dataSize = dataSize; } public List<ApkBean> getApk() { return apk; } public void setApk(List<ApkBean> apk) { this.apk = apk; } public class ApkBean{ private String id; private String name; private String iconUrl; private String downloadUrl; private String packageName; private String versionName; private String versionCode; private String apkSize; private String downloadTimes; private String categoryName; private String from; private int markid; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getIconUrl() { return iconUrl; } public void setIconUrl(String iconUrl) { this.iconUrl = iconUrl; } public String getDownloadUrl() { return downloadUrl; } public void setDownloadUrl(String downloadUrl) { this.downloadUrl = downloadUrl; } public String getPackageName() { return packageName; } public void setPackageName(String packageName) { this.packageName = packageName; } public String getVersionName() { return versionName; } public void setVersionName(String versionName) { this.versionName = versionName; } public String getVersionCode() { return versionCode; } public void setVersionCode(String versionCode) { this.versionCode = versionCode; } public String getApkSize() { return apkSize; } public void setApkSize(String apkSize) { this.apkSize = apkSize; } public String getDownloadTimes() { return downloadTimes; } public void setDownloadTimes(String downloadTimes) { this.downloadTimes = downloadTimes; } public String getCategoryName() { return categoryName; } public void setCategoryName(String categoryName) { this.categoryName = categoryName; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public int getMarkid() { return markid; } public void setMarkid(int markid) { this.markid = markid; } } }
Activity
ListView mylist; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找控件id mylist = (ListView) findViewById(R.id.mylist); Luck(); } //网络请求一般要在子线程跑 public String Luck(){ new Thread(new Runnable() { @Override public void run() { 请求一个字符串 try { String path =("http://huixinguiyu.cn/Assets/js/data.js"); URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //请求方式 conn.setRequestMethod("GET"); //设置连接超时间和读取超时时间 conn.setReadTimeout(8000); conn.setConnectTimeout(8000); //设置请求码 final int code = conn.getResponseCode(); //如果请求成功 if(code==200){ InputStream inputStream = conn.getInputStream(); final ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buf = new byte[1024]; int len = 0; while ((len = inputStream.read(buf))!=-1){ baos.write(buf,0,len); baos.flush(); } runOnUiThread(new Runnable() { @Override public void run() { String string = baos.toString(); Gson gson = new Gson(); Date date = gson.fromJson(string, Date.class); List<Date.ApkBean> apk =date.apk; //适配 MyBase myBase = new MyBase(MainActivity.this, apk); mylist.setAdapter(myBase); } }); } } catch (Exception e) { e.printStackTrace(); } } }).start(); return null; } //设置适配器,适配内容 class MyBase extends BaseAdapter{ Context content; List<Date.ApkBean> list; public MyBase(Context content, List<Date.ApkBean> list) { this.content = content; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { view = View.inflate(content,R.layout.item,null); //控件 ImageView image = (ImageView) view.findViewById(R.id.image); TextView name = (TextView) view.findViewById(R.id.textView); TextView from = (TextView) view.findViewById(R.id.textView2); //赋值 name.setText(list.get(i).getName()); from.setText(list.get(i).getFrom()); image.setImageResource(R.mipmap.ic_launcher ); return view; } }