//所需要的注解
implementation ‘com.android.support:design:28.0.0-rc01’
implementation project(’:xListView’)
implementation ‘com.google.code.gson:gson:2.8.5’
implementation’com.nostra13.universalimageloader:universal-image-loader:1.9.5’
----------------------------------------------------------------------------------------------
//1.布局页面
<LinearLayout… xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:app=“http://schemas.android.com/apk/res-auto”
xmlns:tools=“http://schemas.android.com/tools”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:orientation=“vertical”>
<FrameLayout
android:id="@+id/fl_content"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</FrameLayout>
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="match_parent"
android:layout_height="65dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radio1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/sele_r"
android:gravity="center"
android:textSize="25sp"
android:text="主页" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/sele_r"
android:gravity="center"
android:textSize="25sp"
android:text="联系人" />
<RadioButton
android:id="@+id/radio3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/sele_r"
android:gravity="center"
android:textSize="25sp"
android:text="我的" />
</RadioGroup>
</LinearLayout…>
public class MainActivity extends FragmentActivity implements View.OnClickListener {
private RadioButton rb1;
private RadioButton rb2;
private RadioButton rb3;
private RadioGroup radioGroup;
private Fragment_01 f1;
private FragmentManager manager;
private FragmentTransaction transaction;
private Fragment_02 f2;
private Fragment_03 f3;
@SuppressLint("CommitTransaction")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//拿到事务管理并开启事物
manager = getSupportFragmentManager();
transaction = manager.beginTransaction();
//找控件
rb1 = findViewById(R.id.radio1);
rb2 = findViewById(R.id.radio2);
rb3 = findViewById(R.id.radio3);
radioGroup = findViewById(R.id.radioGroup);
//为按钮添加监听
rb1.setOnClickListener(this);
rb2.setOnClickListener(this);
rb3.setOnClickListener(this);
//启动默认选中的第一个
radioGroup.check(R.id.radio1);
f1 = new Fragment_01();
transaction.replace(R.id.fl_content, f1);
transaction.commit();
}
@Override
public void onClick(View v) {
manager = getSupportFragmentManager();
transaction = manager.beginTransaction();
switch (v.getId()) {
case R.id.radio1:
hideFragment(transaction);
f1 = new Fragment_01();
transaction.replace(R.id.fl_content, f1);
transaction.commit();
break;
case R.id.radio2:
hideFragment(transaction);
f2 = new Fragment_02();
transaction.replace(R.id.fl_content, f2);
transaction.commit();
break;
case R.id.radio3:
hideFragment(transaction);
f3 = new Fragment_03();
transaction.replace(R.id.fl_content, f3);
transaction.commit();
break;
}
}
//去除(隐藏)所有的Fragment
private void hideFragment(FragmentTransaction transaction) {
if (f1 != null) {
transaction.remove(f1);
}
if (f2 != null) {
transaction.remove(f2);
}
if (f3 != null) {
transaction.remove(f3);
}
}
}
<?xml version="1.0" encoding="utf-8"?><LinearLayout… xmlns:android=“http://schemas.android.com/apk/res/android”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:gravity=“center”
android:orientation=“vertical”>
<android.support.design.widget.TabLayout
android:id="@+id/tab1"
android:layout_width="match_parent"
android:layout_height="60dp" />
<android.support.v4.view.ViewPager
android:id="@+id/pager1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout…>
//-------------------------------------------------------------------------
//1.类页面 横向标签
public class Fragment_01 extends Fragment {
private ArrayList<String> tabs;
private ArrayList<Fragment> fragments;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//找页面
View view = inflater.inflate(R.layout.fragment01, container, false);
//找控件
ViewPager pager = view.findViewById(R.id.pager1);
TabLayout tab = view.findViewById(R.id.tab1);
//页卡数据
tabs = new ArrayList<>();
tabs.add("推荐");
tabs.add("热门");
tabs.add("科技");
tabs.add("创投");
tabs.add("数码");
tabs.add("技术");
tabs.add("设计");
//设置模式
tab.setTabMode(TabLayout.MODE_FIXED);
//给TabLayout添加数据
tab.addTab(tab.newTab().setText(tabs.get(0)));
tab.addTab(tab.newTab().setText(tabs.get(1)));
tab.addTab(tab.newTab().setText(tabs.get(2)));
tab.addTab(tab.newTab().setText(tabs.get(3)));
tab.addTab(tab.newTab().setText(tabs.get(4)));
tab.addTab(tab.newTab().setText(tabs.get(5)));
tab.addTab(tab.newTab().setText(tabs.get(6)));
//viewpager数据
fragments = new ArrayList<>();
//viewPager数据
fragments.add(new Frag01());
fragments.add(new Frag02());
fragments.add(new Frag03());
fragments.add(new Frag04());
fragments.add(new Frag05());
fragments.add(new Frag06());
fragments.add(new Frag07());
//创建 viewpager 适配器
MyViewPagerAdapter myViewPagerAdapter = new MyViewPagerAdapter(getActivity().getSupportFragmentManager(), fragments, tabs);
pager.setAdapter(myViewPagerAdapter);
//TabLayout关联viewPager
tab.setupWithViewPager(pager);
return view;
}
}
//-------------------------------------------------------------------------
//MyViewPagerAdapter适配器
package com.xxx.adapter;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.List;
public class MyViewPagerAdapter extends FragmentPagerAdapter {
private Listfragments;
private Listtabs;
public MyViewPagerAdapter(FragmentManager fm, List<Fragment> fragments, List<String> tabs) {
super(fm);
this.fragments = fragments;
this.tabs = tabs;
}
@Override
public Fragment getItem(int i) {
return fragments.get(i);
}
@Override
public int getCount() {
return fragments.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return tabs.get(position);
}
}
//--------------------------------------------------------------------------------------------------
//解析布局
<LinearLayout… xmlns:android=“http://schemas.android.com/apk/res/android”
android:layout_width=“match_parent”
android:layout_height=“match_parent”>
<me.maxwin.view.XListView
android:id="@+id/xlistView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout…>
//----------------------------------------------------------------------------------------
//解析页面
public class Frag01 extends Fragment {
private XListView xListView;
private int page = 1;
private List<Datas>list1=null;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0:
xListView.stopRefresh();
break;
case 1:
xListView.stopLoadMore();
break;
}
}
};
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//找页面
View view = inflater.inflate(R.layout.frag01, container, false);
//找控件
xListView = view.findViewById(R.id.xlistView1);
//设置上拉加载
xListView.setPullLoadEnable(true);
//设置下拉刷新
xListView.setPullRefreshEnable(true);
//设置监听
xListView.setXListViewListener(new XListView.IXListViewListener() {
//下拉刷新
@Override
public void onRefresh() {
getRefreshTime();
page = 1;
getServerData();
handler.sendEmptyMessageAtTime(0,5000);
}
//上拉加载
@Override
public void onLoadMore() {
page++;
getServerData();;
handler.sendEmptyMessageAtTime(1,5000);
}
});
//获取网络数据
getServerData();
//获取当前时间
getRefreshTime();
return view;
}
//获取当前时间
@SuppressLint("SimpleDateFormat")
private void getRefreshTime() {
long time = System.currentTimeMillis();
Date date = new Date(time);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = simpleDateFormat.format(date);
xListView.setRefreshTime(s);
}
//获取网络数据
private void getServerData() {
new MyAsync().execute();
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
new MyAsync().execute();
}
private class MyAsync extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... strings) {
String path = "http://www.xieast.com/api/news/news.php?page=" + page;
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();
return json;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Log.i("xxx", s);
Gson gson = new Gson();
JsonBean fromJson = gson.fromJson(s, JsonBean.class);
ArrayList<Datas> list = fromJson.getData();
if (page==1){
list1=new ArrayList<>();
}
list1.addAll(list);
MyAdapter myAdapter = new MyAdapter(getActivity(), list);
xListView.setAdapter(myAdapter);
xListView.setSelection(myAdapter.getCount()-29);
}
}
}
//-------------------------------------------------------------------------------------------
//MyAdapter适配器
package com.xxx.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.xxx.bean.Datas;
import com.xxx.hh.R;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
public class MyAdapter extends BaseAdapter {
private final static int TYPE_ONE=0;
private final static int TYPE_TWO=1;
private Context context;
private ArrayList<Datas>list;
public MyAdapter(Context context, ArrayList<Datas> list) {
this.context = context;
this.list = list;
}
//条目类型数量
@Override
public int getViewTypeCount() {
return 2;
}
//根据数据判断类型
@Override
public int getItemViewType(int position) {
if (position%2==1){
return TYPE_TWO;
}else {
return TYPE_ONE;
}
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder1 viewHolder1=null;
ViewHolder2 viewHolder2=null;
int itemViewType = getItemViewType(position);
if (convertView==null){
if (itemViewType==TYPE_ONE){
convertView =View.inflate(context, R.layout.item1,null);
viewHolder1 = new ViewHolder1();
viewHolder1.tv1 = convertView.findViewById(R.id.textView1);
viewHolder1.tv2 = convertView.findViewById(R.id.textView2);
viewHolder1.image1 = convertView.findViewById(R.id.pic1);
convertView.setTag(viewHolder1);
}else{
convertView =View.inflate(context, R.layout.item2,null);
viewHolder2 = new ViewHolder2();
viewHolder2.tv3 = convertView.findViewById(R.id.textView3);
viewHolder2.tv4 = convertView.findViewById(R.id.textView4);
viewHolder2.image3 = convertView.findViewById(R.id.pic3);
viewHolder2.image4 = convertView.findViewById(R.id.pic4);
convertView.setTag(viewHolder2);
}
}else{
if (itemViewType==TYPE_ONE){
viewHolder1= (ViewHolder1) convertView.getTag();
}else{
viewHolder2= (ViewHolder2) convertView.getTag();
}
}
if (itemViewType==TYPE_ONE){
viewHolder1.tv1.setText(list.get(position).getAuthor_name());
viewHolder1.tv2.setText(list.get(position).getTitle());
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),viewHolder1.image1);
}else{
viewHolder2.tv3.setText(list.get(position).getAuthor_name());
viewHolder2.tv4.setText(list.get(position).getTitle());
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),viewHolder2.image3);
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),viewHolder2.image4);
}
return convertView;
}
class ViewHolder1{
private TextView tv1;
private TextView tv2;
private ImageView image1;
}class ViewHolder2{
private TextView tv3;
private TextView tv4;
private ImageView image3;
private ImageView image4;
}
}
//图片圆角