public class MyTask extends AsyncTask<String,Void,String>
{
//2.申明接口类型变量
private ICallBacks iCallBacks;
//4.传入实现此接口的类对象
public MyTask(ICallBacks iCallBacks) {
this.iCallBacks = iCallBacks;
}
@Override
protected String doInBackground(String... strings) {
try {
URL url=new URL(strings[0]);
HttpURLConnection connection =(HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
if(connection.getResponseCode()==200){
InputStream inputStream = connection.getInputStream();
String s=StreamToStingUtis.streamToString(inputStream);
return s;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//3.调用接口
iCallBacks.getJson(s);
//iCallBacks=new MainActivity();
// iCallBacks.getJson(s);
}
//1.定义一个接口
public interface ICallBacks{
void getJson(String json);
}
}
public class MainActivity extends AppCompatActivity{
String url="http://v.juhe.cn/toutiao/index?type=top&key=444da40ec8ee43818073d7131c2ffa8f";
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.lv);
//传入一个url地址,给工具类,
//1.使用当前类继承接口
//2.使用匿名内部类的形式
MyTask myTask=new MyTask(new MyTask.ICallBacks() {
@Override
public void getJson(String json) {
Gson gson=new Gson();
ResultData resultData = gson.fromJson(json, ResultData.class);
MyAdapter adapter=new MyAdapter(MainActivity.this,resultData.getResult().getData());
listView.setAdapter(adapter);
}
});
myTask.execute(url);
}
}
//流转成string工具
public class streamToString {
public static String toString(InputStream inputStream){
StringBuilder builder = new StringBuilder();
try {
String str;
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
while ((str=reader.readLine())!=null){
builder.append(str);
}
} catch (Exception e) {
e.printStackTrace();
}
return builder.toString();
}
}