首先写网络权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
主页面布局(微信页面,1,多条目listview2,多条目gridview,3,多条目上拉,下拉)
<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="wrap_content"
android:layout_height="0dp"
android:layout_weight="1">
</android.support.v4.view.ViewPager>
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radio0"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:button="@null"
android:checked="true"
android:drawableTop="@drawable/selector_b"
android:gravity="center"
android:text="listview" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/selector_b"
android:gravity="center"
android:text="gridview" />
<RadioButton
android:id="@+id/radio2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/selector_b"
android:gravity="center"
android:text="上下拉" />
</RadioGroup>
</LinearLayout>
<!-- 侧滑界面 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="#ccc"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="侧滑按钮" />
<ListView
android:id="@+id/MList"
android:layout_width="match_parent"
android:layout_height="match_parent"></ListView>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
main-avtivity对应的代码
public class MainActivity extends FragmentActivity {
private String str = "http://v.juhe.cn/joke/content/list.php?key=d8a4d2b6b72b88532f085b408e92717f&page=2&pagesize=10&sort=asc&time=1418745237";
private ViewPager pager;
private RadioGroup RadioGroup;
private ListView listview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取控件id
pager = findViewById(R.id.pager);
RadioGroup = findViewById(R.id.radioGroup);
listview = findViewById(R.id.MList);
//侧拉
DrawerLayout drawerLayout = findViewById(R.id.draw);
drawerLayout.openDrawer(Gravity.LEFT);
drawerLayout.closeDrawer(Gravity.LEFT);
drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(@NonNull View view, float v) {
}
@Override
public void onDrawerOpened(@NonNull View view) {
}
@Override
public void onDrawerClosed(@NonNull View view) {
}
@Override
public void onDrawerStateChanged(int i) {
}
});
//创建fragment集合
final ArrayList<Fragment> list = new ArrayList<Fragment>();
FragListview fragListview = new FragListview();
FragListview2 fragListview2 = new FragListview2();
FragListview3 fragListview3 = new FragListview3();
list.add(fragListview);
list.add(fragListview2);
list.add(fragListview3);
pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int i) {
return list.get(i);
}
@Override
public int getCount() {
return list.size();
}
});
RadioGroup.check(RadioGroup.getChildAt(0).getId());
pager.addOnPageChangeListener(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) {
}
});
RadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(android.widget.RadioGroup radioGroup, int i) {
switch (i){
case R.id.radio0:
pager.setCurrentItem(0);
break;
case R.id.radio1:
pager.setCurrentItem(1);
break;
case R.id.radio2:
pager.setCurrentItem(2);
break;
}
}
});
}
}
Httputil
public class HttpUtil {
public static String requestHttpGet(String strUrl) {
try {
//设置url
URL url = new URL(strUrl);
//获取HttpURLConnection
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//设置为get请求
connection.setRequestMethod("GET");
//设置连接主机超时时间
connection.setConnectTimeout(5000);
//设置从主机读取数据超时
connection.setReadTimeout(5000);
//获取请求码(来判断网络请求是否正确)
int code = connection.getResponseCode();
//判断请求是否成功
if (code == HttpURLConnection.HTTP_OK) {
//如果数据请求成功,就获取数据
InputStream stream = connection.getInputStream();
//创建字符流
BufferedReader reader = new BufferedReader(new InputStreamReader(stream,"utf-8"));
//拼接字符串
StringBuilder builder = new StringBuilder();
//把数据读取从成字符串
String str = "";
while ((str = reader.readLine()) != null){
//把一行行数据拼接成一行数据
builder.append(str);
}
//返回拼接后的数据
return builder.toString();
}
//关闭连接
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
}
fragment布局
<ListView
android:id="@+id/Flistview"
android:layout_width="match_parent"
android:layout_height="match_parent"></ListView>
fragment(导入gson依赖)
public class FragListview extends Fragment {
private ListView listview;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// return super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.fraglistview,container,false);
listview = view.findViewById(R.id.Flistview);
//解析网络数据
new Thread(){
@Override
public void run() {
super.run();
String s = HttpUtil.requestHttpGet("https://api.apiopen.top/musicRankings");
Gson gson = new Gson();
JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
List<JsonBean.ResultBean> list = jsonBean.getResult();
Message message = new Message();
message.what = 0;
message.obj = list;
handler.sendMessage(message);
}
}.start();
return view;
}
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 0:
List<JsonBean.ResultBean> list = (List<JsonBean.ResultBean>) msg.obj;
//展示到listview上
listview.setAdapter(new MyListAdapter(list, getActivity()));
break;
}
}
};
adapter布局(列表优化)
public class MyListAdapter extends BaseAdapter {
private List<JsonBean.ResultBean>list;
private Context context;
public MyListAdapter(List<JsonBean.ResultBean> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
//多条目代码========================
@Override
public int getViewTypeCount() {//视图个数
return 2;
}
@Override
public int getItemViewType(int position) {//视图类型
return position%2;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
//根据类型加载不同视图
switch (getItemViewType(i)){
case 0:
ViewHolder holder = null;
if (view == null){
view = View.inflate(context, R.layout.list_adapter,null);
holder = new ViewHolder();
holder.textView = view.findViewById(R.id.Ltext);
holder.imageView = view.findViewById(R.id.Limage);
view.setTag(holder);
}else{
holder = (ViewHolder) view.getTag();
}
JsonBean.ResultBean resultBean = list.get(i);
holder.textView.setText(resultBean.getName());
ImageLoader.getInstance().displayImage(resultBean.getPic_s192(),holder.imageView);
break;
case 1:
ViewHolder2 holder2 = null;
if (view == null){
view = View.inflate(context,R.layout.list_adapter2,null);
holder2 = new ViewHolder2();
holder2.textView2 = view.findViewById(R.id.Ltext2);
holder2.imageView2 = view.findViewById(R.id.Limage2);
view.setTag(holder2);
}else{
holder2 = (ViewHolder2) view.getTag();
}
JsonBean.ResultBean resultBean1 = list.get(i);
holder2.textView2.setText(resultBean1.getName());
ImageLoader.getInstance().displayImage(resultBean1.getPic_s192(),holder2.imageView2);
break;
}
return view;
}
class ViewHolder{
TextView textView;
ImageView imageView;
}
class ViewHolder2{
TextView textView2;
ImageView imageView2;
}
}
APP(ImageLoader)
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
DisplayImageOptions options = new DisplayImageOptions.Builder().build();
//设置imageloader
ImageLoaderConfiguration loaderConfiguration = new ImageLoaderConfiguration.Builder(this)
.defaultDisplayImageOptions(options)
.build();
//获取实例
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.init(loaderConfiguration);
}
}
gridview代码和listview相同
上下拉加载刷新
首先加载xlistview
fragment3布局(上下拉布局)
<com.qy.xlistview.XListView
android:id="@+id/xlistview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></com.qy.xlistview.XListView>
Httputils
public class HttpUtils {
public static void httpAsyncTask(String strUrl, final CallBackString callBackString){
new AsyncTask<String,Integer,String>(){
@Override
protected String doInBackground(String... strings) {
return httpGet(strings[0]);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
callBackString.getData(s);
}
}.execute(strUrl);
}
public interface CallBackString{
void getData(String s);
}
public static String httpGet(String strUrl){
try {
URL url = new URL(strUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
// int code = connection.getResponseCode();
InputStream stream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream,"utf-8"));
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;
}
public static Bitmap GETimage(String string){
try {
URL url = new URL(string);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
int code = connection.getResponseCode();
if (code == HttpURLConnection.HTTP_OK){
InputStream stream = connection.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(stream);
return bitmap;
}
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
fragment3代码
public class FragListview3 extends Fragment {
private XListView xListView;
private String str = "https://api.apiopen.top/musicRankings";
private List<JsonBean.ResultBean> data;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// return super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.fraglistview3, container, false);
//获取控件di
xListView = view.findViewById(R.id.xlistview);
xListView.setPullLoadEnable(true);
xListView.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() { //下拉刷新
HttpUtils.httpAsyncTask(str, new HttpUtils.CallBackString() {
@Override
public void getData(String s) {
Gson gson = new Gson();
JsonBean bean = gson.fromJson(s, JsonBean.class);
data = bean.getResult();
MyListAdapter myListAdapter = new MyListAdapter(data,getActivity());
xListView.setAdapter(myListAdapter);
onload();
}
});
}
@Override
public void onLoadMore() { //上拉加载
HttpUtils.httpAsyncTask(str, new HttpUtils.CallBackString() {
@Override
public void getData(String s) {
Gson gson = new Gson();
JsonBean bean = gson.fromJson(s, JsonBean.class);
List<JsonBean.ResultBean> list = bean.getResult();
data.addAll(list);
MyListAdapter myListAdapter = new MyListAdapter(FragListview3.this.data,getActivity());
xListView.setAdapter(myListAdapter);
onload();
}
});
}
});
HttpUtils.httpAsyncTask(str, new HttpUtils.CallBackString() {
@Override
public void getData(String s) {
Gson gson = new Gson();
JsonBean bean = gson.fromJson(s, JsonBean.class);
data = bean.getResult();
MyListAdapter myListAdapter = new MyListAdapter(data,getActivity());
xListView.setAdapter(myListAdapter);
}
});
return view;
}
public void onload(){
xListView.stopRefresh();
xListView.stopLoadMore();
xListView.setRefreshTime("刷新");
}
}