activity_main.xml
<?xml version="1.0" encoding="utf-8"?><ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:id="@+id/listView" />
## MainActivity package com.example.a20181007_1;
import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ListView listView;
private List<News.DataBean> list;
private MyAdapter adapter;
@SuppressLint("StaticFieldLeak")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找控件
listView = findViewById(R.id.listView);
list = new ArrayList<>();
adapter = new MyAdapter(MainActivity.this, list);
listView.setAdapter(adapter);
new AsyncTask<String, Integer, String>() {
@Override
protected String doInBackground(String... strings) {
return UtilFiles.getStringFromHttp(strings[0]);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
News news = gson.fromJson(s,News.class);
list.clear();
list.addAll(news.getData());
adapter.notifyDataSetChanged();
}
}.execute("http://www.xieast.com/api/news/news.php?type=top&page=1");
}
}
MyAdapter
package com.example.a20181007_1;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.List;
public class MyAdapter extends BaseAdapter {
private Context context;
private List<News.DataBean> list;
public MyAdapter(Context context, List<News.DataBean> list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null){
convertView = View.inflate(context,R.layout.item,null);
holder = new ViewHolder();
holder.pic = convertView.findViewById(R.id.pic);
holder.title = convertView.findViewById(R.id.title);
holder.name = convertView.findViewById(R.id.name);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
//holder.pic.setImageResource(R.drawable.ic_launcher_background);
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder.pic);
holder.title.setText(list.get(position).getTitle());
holder.name.setText(list.get(position).getDate());
return convertView;
}
class ViewHolder{
ImageView pic;
TextView title;
TextView name;
}
}
UtilFiles
package com.example.a20181007_1;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class UtilFiles {
public static String getStringFromHttp(String urlstr) {
URL url = null;
String result = “”;
try {
url = new URL(urlstr);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod(“GET”);
connection.setUseCaches(false);
connection.setConnectTimeout(3000);
if (connection.getResponseCode() == 200){
InputStream is = connection.getInputStream();
result = getStringFromInputStream(is);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
private static String getStringFromInputStream(InputStream is) {
String result = "";
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while((len = is.read(buffer,0,buffer.length))!=-1){
baos.write(buffer,0,len);
baos.flush();
}
result = baos.toString();
is.close();
baos.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
BaseApplication
package com.example.a20181007_1;
import android.app.Application;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
public class BaseApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration cofig = new ImageLoaderConfiguration.Builder(this).build();
ImageLoader.getInstance().init(cofig);
}
}
item.xml
<?xml version="1.0" encoding="utf-8"?><ImageView
android:id="@+id/pic"
android:layout_width="70dp"
android:layout_height="70dp"
android:src="@drawable/ic_launcher_background"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="70dp"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Title"
android:textSize="22sp"
android:id="@+id/title"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="Title"
android:id="@+id/name"/>
</LinearLayout>
**千万记住 要加权限 引用项目 Gson依赖** 1. android:name=".MyApplication"
- implementation ‘com.google.code.gson:gson:2.8.5’
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>