一·
<android.support.v4.widget.DrawerLayout
android:id="@+id/draw"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--主界面-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<android.support.design.widget.TabLayout
android:id="@+id/tab"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<!--=========================分割线==================================-->
<!--侧滑界面-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="#ded3d3"
android:orientation="horizontal">
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="关闭侧滑"/>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
二
public class MainActivity extends AppCompatActivity {
private DrawerLayout draw;
private TabLayout tab;
private ViewPager pager;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//第一步:找控件
draw = findViewById(R.id.draw);
tab = findViewById(R.id.tab);
pager = findViewById(R.id.pager);
button = findViewById(R.id.btn2);//直接找侧滑中的控件
//第二步侧滑页面
draw.addDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(@NonNull View view, float v) {
}
@Override
public void onDrawerOpened(@NonNull View view) {
Toast.makeText(MainActivity.this, "侧滑打开", Toast.LENGTH_LONG).show();
}
@Override
public void onDrawerClosed(@NonNull View view) {
Toast.makeText(MainActivity.this, "侧滑关闭", Toast.LENGTH_LONG).show();
}
@Override
public void onDrawerStateChanged(int i) {
}
});
//第三步:点击侧滑内的按钮 关闭侧滑页面
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
draw.closeDrawer(Gravity.LEFT);
}
});
//页面切换==========================
//第四步:数据
// //页面数据
ArrayList<Fragment> list = new ArrayList<>();
list.add(new Frag01());
list.add(new Frag02());
//tab的文字数据
String str[] = {"首页", "我的"};
//第五步:适配器
MypagerAdapter mypagerAdapter = new MypagerAdapter(getSupportFragmentManager(), list, str);
//给Viewpager设置适配器
pager.setAdapter(mypagerAdapter);
//第六步:绑定Viewpager
tab.setupWithViewPager(pager);
}
}
三
public class HttpUtils {
///创建接口
public interface CallBackA {
//写方法
void getData(String s);
}
//封装异步
public static void getAsyncTask(String url, final CallBackA backA) {
new AsyncTask<String, Void, String>() {
@Override
protected String doInBackground(String... strings) {
return httpGet(strings[0]);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
backA.getData(s);
}
}.execute(url);
}
//====================================================================
/*
* 网络判断
* */
public static boolean isNetworkConnected(Context context) {
if (context != null) {
//获取连接管理器
ConnectivityManager mConnectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获取网络状态
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if (mNetworkInfo != null) {
//判断网络是否可用
return mNetworkInfo.isAvailable();
}
}
return false;
}
/**
* @param strUrl 网络接口
* @return :请求的 String 类型的数据
* @author: 苏青岩
* @data: 2019/1/2 16:24
* @Description: 请求网络数据的方法
*/
public static String httpGet(String strUrl) {
//设置url
try {
URL url = new URL(strUrl);
//获取HttpURLConnection
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//设置为get请求
connection.setRequestMethod("GET");
//设置连接主机超时时间
connection.setConnectTimeout(5000);
//设置从主机读取数据超时
connection.setReadTimeout(5000);
//得到数据
InputStream stream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
//拼接数据
StringBuilder builder = new StringBuilder();
String str = "";
while ((str = reader.readLine()) != null) {
builder.append(str);
}
//关闭连接
connection.disconnect();
//返回数据
return builder.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
四MypagerAdapter
public class MypagerAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> list;
private String str[];
public MypagerAdapter(FragmentManager fm, ArrayList<Fragment> list, String[] str) {
super(fm);
this.list = list;
this.str = str;
}
@Override
public Fragment getItem(int i) {
return list.get(i);
}
@Override
public int getCount() {
return list.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return str[position];
}
}
五frag01
public class Frag01 extends Fragment {
private XListView listView;
private String url = "https://www.apiopen.top/meituApi?page=1";
private XAdapter adapter;
private List<JsonBean.DataBean> list;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag01, container, false);
listView = view.findViewById(R.id.xlist);
listView.setPullLoadEnable(true);
//设置上拉和下拉
listView.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
HttpUtils.getAsyncTask(url, new HttpUtils.CallBackA() {
@Override
public void getData(String s) {
//这个方法在主线程中
//解析
Gson gson = new Gson();
JsonBean bean = gson.fromJson(s, JsonBean.class);
List<JsonBean.DataBean> list = bean.getData();
//适配器
XAdapter adapter = new XAdapter(list, getActivity());
listView.setAdapter(adapter);
listView.stopRefresh();
}
});
}
@Override
public void onLoadMore() {
HttpUtils.getAsyncTask(url, new HttpUtils.CallBackA() {
@Override
public void getData(String s) {
//这个方法在主线程中
//解析
Gson gson = new Gson();
JsonBean bean = gson.fromJson(s, JsonBean.class);
List<JsonBean.DataBean> list2 = bean.getData();
list.addAll(list2);
adapter.notifyDataSetChanged();
listView.stopLoadMore();
}
});
}
});
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//请求数据
HttpUtils.getAsyncTask(url, new HttpUtils.CallBackA() {
@Override
public void getData(String s) {
//这个方法在主线程中
//解析
Gson gson = new Gson();
JsonBean bean = gson.fromJson(s, JsonBean.class);
list = bean.getData();
//适配器
adapter = new XAdapter(list, getActivity());
listView.setAdapter(adapter);
}
});
}
}
六xAdapter
public class XAdapter extends BaseAdapter {
private List<JsonBean.DataBean> list;
private Context context;
public XAdapter(List<JsonBean.DataBean> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position);
switch (type) {
case 0:
ViewHolder0 holder0 = null;
if (convertView == null) {
convertView = View.inflate(context, R.layout.item01, null);
holder0 = new ViewHolder0();
holder0.textView0 = convertView.findViewById(R.id.textView01);
convertView.setTag(holder0);
} else {
holder0 = (ViewHolder0) convertView.getTag();
}
JsonBean.DataBean bean0 = list.get(position);
holder0.textView0.setText(bean0.getType());
break;
case 1:
ViewHolder1 holder1 = null;
if (convertView == null) {
convertView = View.inflate(context, R.layout.item02, null);
holder1 = new ViewHolder1();
holder1.textView1 = convertView.findViewById(R.id.textView1);
holder1.imageView1 = convertView.findViewById(R.id.imageView1);
convertView.setTag(holder1);
} else {
holder1 = (ViewHolder1) convertView.getTag();
}
JsonBean.DataBean bean1 = list.get(position);
holder1.textView1.setText(bean1.getType());
//设置图片
Glide.with(context).load("http://n.sinaimg.cn/sports/transform/237/w650h387/20190219/XUgA-htfpvza1481742.png").into(holder1.imageView1);
break;
case 2:
ViewHolder2 holder2 = null;
if (convertView == null) {
convertView = View.inflate(context, R.layout.item03, null);
holder2 = new ViewHolder2();
holder2.textView2 = convertView.findViewById(R.id.textView2);
holder2.time2 = convertView.findViewById(R.id.textView22);
holder2.imageView2 = convertView.findViewById(R.id.imageView2);
convertView.setTag(holder2);
} else {
holder2 = (ViewHolder2) convertView.getTag();
}
JsonBean.DataBean bean2 = list.get(position);
holder2.textView2.setText(bean2.getType());
holder2.time2.setText(bean2.getCreatedAt());
//设置图片
Glide.with(context).load("http://n.sinaimg.cn/sports/transform/237/w650h387/20190219/XUgA-htfpvza1481742.png").into(holder2.imageView2);
break;
}
return convertView;
}
class ViewHolder0 {
TextView textView0;
}
class ViewHolder1 {
TextView textView1;
ImageView imageView1;
}
class ViewHolder2 {
TextView textView2;
ImageView imageView2;
TextView time2;
}
//=======================================================
//多条目
@Override
public int getViewTypeCount() {//视图类型个数
return 3;
}
@Override
public int getItemViewType(int position) {
return position % 3;
}
}