1.handler请求
package fragment.com.bwei;
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.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;
import net.com.bwei.NetWorkUitls;
import java.util.ArrayList;
import java.util.List;
import bean.com.bwei.JsonBean;
import kk.com.wangkeqiang0102.R;
import myadapter.com.bwei.MyAdapter;
import myasync.com.bwei.MyAsync;
public class Fragment2 extends Fragment {
private View view;
private ListView lv;
private MyAdapter adapter;
private String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
private List<JsonBean.Bean> list= new ArrayList<JsonBean.Bean>();
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
String json = (String) msg.obj;
Gson gson=new Gson();
JsonBean jsonBean = gson.fromJson(json, JsonBean.class);
list.addAll(jsonBean.getData());
adapter.notifyDataSetChanged();
}
};
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragmentb,container,false);
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
lv=view.findViewById(R.id.listView);
adapter = new MyAdapter(list,getActivity());
//new MyAsync(list,adapter).execute(urlString);
lv.setAdapter(adapter);
new Thread(new Runnable() {
@Override
public void run() {
String netJson = NetWorkUitls.getNetJson(urlString);
Message message = handler.obtainMessage();
message.what=1;
message.obj=netJson;
handler.sendMessage(message);
}
}).start();
}
}
lv=view.findViewById(R.id.lv);
adapter= new MyAdapter(list,getActivity());
lv.setAdapter(adapter);
new MyAsyncTask(adapter, list).execute(stringUrl);
2,创建MyAsycnTask类并且继承AsycnTask
public class MyAsyncTask extends AsyncTask<String,Void,String> {
private MyAdapter myAdapter;
private List<JsonBean.DataBean> list=new ArrayList<JsonBean.DataBean>();
public MyAsyncTask(MyAdapter myAdapter, List<JsonBean.DataBean> list) {
this.myAdapter = myAdapter;
this.list = list;
}
@Override
protected String doInBackground(String... strings) {
String netJson = NetWorkUitls.getNetJson(strings[0]);
return netJson;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
List<JsonBean.DataBean> data = jsonBean.getData();
list.addAll(data);
myAdapter.notifyDataSetChanged();
}
}
3.创建外部类NetWorkUitls,在里面创建内部类GetNetJson
public class NetWorkUitls {
public static String getNetJson(String string) {
try {
URL url = new URL(string);
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);
}
return stringBuilder.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
}
4.图片框架
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build();
// ImageLoader instance = ImageLoader.getInstance();
// instance.init(build);
ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this).build();
ImageLoader instance = ImageLoader.getInstance();
instance.init(configuration);
}
}
5.设置网络权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
注册android:name="myapp.MyApp"