第一步首页布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" > <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="9"/> <RadioGroup android:id="@+id/radio_group" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal"> <RadioButton android:id="@+id/rb1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:button="@null" android:gravity="center" android:background="@drawable/bgcolor" android:checked="true" android:text="Http" android:textSize="20sp" /> <RadioButton android:id="@+id/rb2" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:text="Clie" android:button="@null" android:textSize="20sp" android:background="@drawable/bgcolor" android:gravity="center"/> </RadioGroup> </LinearLayout>
第二步初始化控件以及其它操作:
package com.example.two; import android.app.FragmentManager; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.RadioGroup; import com.example.two.Adapter.FragmentPagerAdapter; import com.example.two.Fragment.ClieFragment; import com.example.two.Fragment.HttpFragment; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private ViewPager vp; private RadioGroup radio_group; private HttpFragment httpFragment; private ClieFragment clieFragment; private FragmentManager manager; private ArrayList<Fragment> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vp = findViewById(R.id.vp); radio_group = findViewById(R.id.radio_group); list = new ArrayList<>(); list.add(new HttpFragment()); list.add(new ClieFragment()); FragmentPagerAdapter adapter = new FragmentPagerAdapter(getSupportFragmentManager(),list); vp.setAdapter(adapter); vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { radio_group.check(radio_group.getChildAt(position).getId()); } @Override public void onPageScrollStateChanged(int state) { } }); radio_group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, int i) { switch (i){ case R.id.rb1: vp.setCurrentItem(0); break; case R.id.rb2: vp.setCurrentItem(1); break; default: break; } } }); } }
第三步FragmentPagerAdapter:
package com.example.two.Adapter; import android.content.Context; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import java.util.ArrayList; public class FragmentPagerAdapter extends android.support.v4.app.FragmentPagerAdapter { private ArrayList<Fragment> list; public FragmentPagerAdapter(FragmentManager fm, ArrayList<Fragment> list) { super(fm); this.list = list; } public FragmentPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return list.get(position); } @Override public int getCount() { return list.size(); } }
第四步HttpFragment()操作:
package com.example.two.Fragment; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; 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.AdapterView; import android.widget.ListView; import com.example.two.Adapter.HttpAdapter; import com.example.two.Bean.newsBean; import com.example.two.R; import com.example.two.ShowActivity; import com.google.gson.Gson; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.Date; import java.util.List; public class HttpFragment extends Fragment { private ListView list_h_view; private String path = "http://www.xieast.com/api/news/news.php?page=1"; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.http_layout, container, false); list_h_view = view.findViewById(R.id.list_h_view); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); jiexi(path); } private void jiexi(String path) { my my = new my(); my.execute(path); } public class my extends AsyncTask<String ,Integer , String>{ //耗时操作 @Override protected String doInBackground(String... params) { String path = params[0]; try { URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); connection.setRequestMethod("GET"); if (connection.getResponseCode() == 200){ InputStream inputStream = connection.getInputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] bytes = new byte[1024]; int leng = 0; while ((leng = inputStream.read(bytes))!= -1){ outputStream.write(bytes,0,leng); } outputStream.close(); inputStream.close(); String s = outputStream.toString(); return s; } } catch (Exception e) { } return null; } //更新ui @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); newsBean newsBean = gson.fromJson(s, newsBean.class); final List<com.example.two.Bean.newsBean.DataBean> data = newsBean.getData(); HttpAdapter httpAdapter = new HttpAdapter(getActivity(), data); list_h_view.setAdapter(httpAdapter); list_h_view.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Intent intent = new Intent(getActivity(),ShowActivity.class); intent.putExtra("url",data.get(i).getUrl()); startActivity(intent); } }); } } }
创建HttpAdapter:
package com.example.two.Adapter; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import com.example.two.Bean.newsBean; import com.example.two.R; import java.util.List; public class HttpAdapter extends BaseAdapter { private Context context; private List<com.example.two.Bean.newsBean.DataBean> list; public HttpAdapter(Context context, List<newsBean.DataBean> list) { this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View convertview, ViewGroup viewGroup) { ViewHolper holper = null; if (convertview == null){ convertview = View.inflate(context,R.layout.text_layout, null); holper = new ViewHolper(); holper.text_view = convertview.findViewById(R.id.tv); convertview.setTag(holper); }else{ holper = (ViewHolper) convertview.getTag(); } holper.text_view.setText(list.get(i).getTitle()); return convertview; } class ViewHolper{ TextView text_view; } }
第四步Bean包:
第五步跳转页面:
package com.example.two; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.webkit.WebView; public class ShowActivity extends AppCompatActivity { private WebView web; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_show); web = findViewById(R.id.web); Intent intent = getIntent(); web.loadUrl(intent.getStringExtra("url")); } }
第六步ClieFragment()操作:
package com.example.two.Fragment; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; 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.AdapterView; import android.widget.ListView; import com.example.two.Adapter.HttpAdapter; import com.example.two.Bean.newsBean; import com.example.two.R; import com.example.two.ShowActivity; import com.google.gson.Gson; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.List; public class ClieFragment extends Fragment { private ListView list_c_view; private String path = "http://www.xieast.com/api/news/news.php?page=1"; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.clie_layout, container, false); list_c_view = view.findViewById(R.id.list_c_view); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); jiexi(path); } private void jiexi(String path) { my my = new my(); my.execute(path); } public class my extends AsyncTask<String ,Integer , String> { //耗时操作 @Override protected String doInBackground(String... params) { DefaultHttpClient client = new DefaultHttpClient(); String path = params[0]; HttpGet get = new HttpGet(path); try { HttpResponse response = client.execute(get); if (response.getStatusLine().getStatusCode() == 200){ HttpEntity entity = response.getEntity(); String s = EntityUtils.toString(entity); return s; } } catch (Exception e) { e.printStackTrace(); } return null; } //更新ui @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); newsBean newsBean = gson.fromJson(s, newsBean.class); final List<com.example.two.Bean.newsBean.DataBean> data = newsBean.getData(); HttpAdapter httpAdapter = new HttpAdapter(getActivity(), data); list_c_view.setAdapter(httpAdapter); list_c_view.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Intent intent = new Intent(getActivity(),ShowActivity.class); intent.putExtra("url",data.get(i).getUrl()); startActivity(intent); } }); } } }