Handler更新子线程数据+AayncTask实现异步执行任务
1.viewpager+Fragment标签页联动
final ViewPager pager=(ViewPager)findViewById(R.id.pager);
radioGroup = (RadioGroup)findViewById(R.id.radio);
final ArrayList<Fragment> arrayList=new ArrayList<Fragment>();
arrayList.add(new Frag_01());
arrayList.add(new Frag_02());
radioGroup.check(radioGroup.getChildAt(0).getId());
pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int i) {
return arrayList.get(i);
}
@Override
public int getCount() {
return arrayList.size();
}
});
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.button:
pager.setCurrentItem(0);
break;
case R.id.button2:
pager.setCurrentItem(1);
break;
}
}
});
pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
radioGroup.check(radioGroup.getChildAt(i).getId());
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
2.网络判断
创建NetWork类
public static boolean isNetWork(Context context){
ConnectivityManager connectivityManager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info != null) {
return info.isAvailable();
}
return false;
}
主页面进行判断
boolean netWork = MyNetWork.isNetWork(this);
if (netWork) {
Toast.makeText(this, "有网", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this, "木有网啊", Toast.LENGTH_SHORT).show();
AlertDialog.Builder builder= new AlertDialog.Builder(this);
builder.setTitle("提示");
builder.setMessage("设置网络连接");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setNegativeButton("取消",null);
builder.create().show();
}
3.listview用Handler+子线程方式 请求数据并优化适配器
移除多余视图
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.frag_01,container,false);
listView = (ListView)view.findViewById(R.id.listview);
ViewGroup parent=(ViewGroup)view.getParent();
//移除多余视图
if (parent!=null){
parent.removeView(view);
}
getData();
return view;
}
创建子线程
private void getData() {
new Thread(new Runnable() {
@Override
public void run() {
try {
URL url=new URL(path);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
if (conn.getResponseCode()==200){
InputStream inputStream = conn.getInputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len=0;
while ((len=inputStream.read(buffer))!=-1){
bos.write(buffer,0,len);
}
bos.close();
inputStream.close();
String json = bos.toString();
Message message=Message.obtain();
message.obj=json;
message.what=0;
handler.sendMessage(message);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
Handler获取数据
@SuppressLint("HandlerLeak")
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what==0){
String json=(String)msg.obj;
Gson gson=new Gson();
JsonBean jsonBean = gson.fromJson(json, JsonBean.class);
List<JsonBean.DataBean> list = jsonBean.getData();
listView.setAdapter(new MyAdapter(getActivity(), (ArrayList<JsonBean.DataBean>) list));
}
}
};
4.GridView用AsyncTask的方式请求数据并优化适配器
移除多余视图
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.frag_02,container,false);
gridView = (GridView)view.findViewById(R.id.gridview);
ViewGroup parent=(ViewGroup)view.getParent();
//移除多余视图
if (parent!=null){
parent.removeView(view);
}
MyAsyncTask myAsyncTask=new MyAsyncTask();
myAsyncTask.execute(path);
return view;
}
创建AsyncTask
private class MyAsyncTask extends AsyncTask<String,Integer,String>{
@Override
protected String doInBackground(String... strings) {
String uri=strings[0];
try {
URL url=new URL(path);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
if (conn.getResponseCode()==200){
InputStream inputStream = conn.getInputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len=0;
while ((len=inputStream.read(buffer))!=-1){
bos.write(buffer,0,len);
}
inputStream.close();
bos.close();
String json = bos.toString();
return json;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.i("xxx",s.toString());
Gson gson=new Gson();
JsonBean2 jsonBean2 = gson.fromJson(s, JsonBean2.class);
List<JsonBean2.DataBean> list = jsonBean2.getData();
gridView.setAdapter(new MyAdapter2(getActivity(), (ArrayList<JsonBean2.DataBean>) list));
}
}