libs文件夹下加入jar包(导包): gson
//https://www.cnblogs.com/shenhuiran/p/8125669.html
=======================================
添加权限:
网络请求权限:INTERNET
<uses-permission android:name="android.permission.INTERNET"/>
===========================================================
布局:
<ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ==========================================================================
json解析类:https://api.tianapi.com/wxnew/?key=32b83b189e5e5e520db1612a83d82033&num=10
============================================================ 主要方法: import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ListView; import com.google.gson.Gson; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.List; public class MainActivity extends AppCompatActivity { private ListView listview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listview = findViewById(R.id.list_view); MyTask myTask = new MyTask(); myTask.execute("https://api.tianapi.com/wxnew/?key=32b83b189e5e5e520db1612a83d82033&num=10"); } class MyTask extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... strings) { StringBuilder builder = new StringBuilder(); try { URL url = new URL(strings[0]); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setConnectTimeout(5000); urlConnection.setReadTimeout(5000); urlConnection.setRequestMethod("GET"); if (urlConnection.getResponseCode() == 200) { InputStream inputStream = urlConnection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String str; while ((str = reader.readLine()) != null) { builder.append(str); } } } catch (Exception e) { e.printStackTrace(); } return builder.toString(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); Result result = gson.fromJson(s, Result.class); List<Result.NewslistBean> data = result.getNewslist(); MyAdapter myAdapter = new MyAdapter(data, MainActivity.this); listview.setAdapter(myAdapter); } } } =========================================================
MyAdapter 适配器方法:
import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.List; class MyAdapter extends BaseAdapter { private List<Result.NewslistBean> data; private Context context; public MyAdapter(List<Result.NewslistBean> data, Context context) { this.data = data; this.context = context; } @Override public int getCount() { return data.size(); } @Override public Object getItem(int i) { return data.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder holder; if (view == null) { view= LayoutInflater.from(context).inflate(R.layout.item,null); holder = new ViewHolder(); holder.name=view.findViewById(R.id.name); holder.img=view.findViewById(R.id.img); view.setTag(holder); }else { holder = (ViewHolder) view.getTag(); } holder.name.setText(data.get(i).getDescription()); new MyTask(holder.img).execute(data.get(i).getPicUrl()); return view; } class ViewHolder { public TextView name; public ImageView img; } class MyTask extends AsyncTask<String, Void, Bitmap> { private ImageView img; public MyTask(ImageView img) { this.img = img; } @Override protected Bitmap doInBackground(String... strings) { Bitmap bitmap = null; try { URL url = new URL(strings[0]); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setConnectTimeout(5000); urlConnection.setReadTimeout(5000); urlConnection.setRequestMethod("GET"); if (urlConnection.getResponseCode() == 200) { InputStream inputStream = urlConnection.getInputStream(); bitmap = BitmapFactory.decodeStream(inputStream); } } catch (Exception e) { e.printStackTrace(); } return bitmap; } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); img.setImageBitmap(bitmap); } } } -------------------------------------------
R.layout.item
<RelativeLayout 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"> <ImageView android:id="@+id/img" android:layout_width="50dp" android:layout_height="50dp" android:layout_margin="10dp" tools:layout_editor_absoluteX="16dp" tools:layout_editor_absoluteY="16dp" /> <TextView android:id="@+id/name" android:layout_width="200dp" android:layout_height="50dp" android:layout_alignTop="@+id/img" android:layout_toEndOf="@+id/img" android:layout_toRightOf="@+id/img" tools:layout_editor_absoluteX="80dp" tools:layout_editor_absoluteY="16dp" /> </RelativeLayout>