import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ListView;
import com.google.gson.Gson;
import java.util.List;
import zhao.com.adapter.MAdapter1;
import zhao.com.bean.DataBean;
import zhao.com.bean.Student;
import zhao.com.demo01.DataUrl;
import zhao.com.demo01.R;
public class FRag_02 extends Fragment {
//接口地址
String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
Button button;
ListView listView;
List<DataBean> list;
MAdapter mAdapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View mView = inflater.inflate(R.layout.frag_02, container, false);
button = mView.findViewById(R.id.button1);
listView = mView.findViewById(R.id.listView1);
//按钮点击事件
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//这行代码要在主线程调用;,execute里面的参数是接口地址;
new MyAsyncTack().execute(urlString);
}
});
return mView;
}
//自定义内部类
class MyAsyncTack extends AsyncTask<String,Void ,String> {
//相当于子线程
@Override
protected String doInBackground(String... strings) { //String... strings:可变数组
//DataUrl.getjson:自定义的类和方法
return DataUrl.getjson(strings[0]); //只传入一个值所以下标是0
}
//相当于主线程
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//Gson解析
Gson gson = new Gson();
Student student = gson.fromJson(s, Student.class);
list = student.getData();
mAdapter = new MAdapter(getActivity(), list);
listView.setAdapter(mAdapter);
//刷新数据
mAdapter.notifyDataSetChanged();
}
}
}
//适配器
import android.content.Context;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
import zhao.com.bean.DataBean;
import zhao.com.demo01.DataUrl;
import zhao.com.demo01.R;
public class MAdapter extends BaseAdapter {
Context context;
List list=null;
Bitmap bitmap;
public MAdapter(Context context, Listlist) {
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) {
ViewHolder1 holder = null;
if (convertView == null) {
holder = new ViewHolder1();
convertView = View.inflate(context, R.layout.lv_json_item, null);
holder.textView2 = convertView.findViewById(R.id.textView_json);
holder.imageView1= convertView.findViewById(R.id.image_tu);
convertView.setTag(holder);
} else holder = (ViewHolder1) convertView.getTag();
holder.textView2.setText(list.get(position).getNews_title());
//再次发送从json数组中获取的的图片地址
new MBitmpAsyncTack(holder.imageView1).execute(list.get(position).getPic_url());
return convertView;
}
}
class ViewHolder1 {
TextView textView2;
ImageView imageView1;
}
class MBitmpAsyncTack extends AsyncTask<String,Void,Bitmap> {
ImageView iv;
public MBitmpAsyncTack(ImageView iv) {
this.iv = iv;
}
@Override
protected Bitmap doInBackground(String... strings) {
//返回获取的bitmap
return DataUrl.getImsge(strings[0]);
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
//在这更改图片
iv.setImageBitmap(bitmap);
}
}
//自定义的类用来发送HTTPUrlConnetion
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class DataUrl {
public static String getjson(String urlString) {
try {
URL url = new URL(urlString);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
int responseCode = urlConnection.getResponseCode();
if (responseCode == 200) {
InputStream inputStream = urlConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
//可拼接的字符串
StringBuilder stringBuilder = new StringBuilder();
String temp = "";
while ((temp = bufferedReader.readLine()) != null) {
stringBuilder.append(temp);
}
String jsonString = stringBuilder.toString();
return jsonString;
}else {
Log.e("zmz","请求失败,请求码:"+responseCode);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
//(HttpURLConnection获取图片
public static Bitmap getImsge(String pic_url) {
try {
URL url = new URL(pic_url);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
int responseCode = urlConnection.getResponseCode();
if (responseCode == 200) {
InputStream inputStream = urlConnection.getInputStream();
//BitmapFactory: android提供好的加工图片的工具类,
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
return bitmap;
} else {
Log.e("zmz","请求失败,请求码:"+responseCode);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}