Mainactivity.class
package com.example.lx_zk1.activity;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.example.lx_zk1.R;
import com.example.lx_zk1.adapter.TabAdapter;
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
private TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取资源ID
viewPager = findViewById(R.id.viewpager);
tabLayout = findViewById(R.id.tab);
//设置适配器
TabAdapter adapter = new TabAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
//根据viewpager设置tab
tabLayout.setupWithViewPager(viewPager);
}
}
NewsAdapter`
package com.example.lx_zk1.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 com.example.lx_zk1.fragment.SFragment;
import com.example.lx_zk1.fragment.WFragment;
public class TabAdapter extends FragmentPagerAdapter {
//创建一个string集合
private String[] menus = new String[]{
"首页","视频","我的"
};
public TabAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
return new SFragment();
default:
return new WFragment();
}
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return menus[position];
}
@Override
public int getCount() {
return menus.length;
}
}
优化代码UserAdapter
package com.example.lx_zk1.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.lx_zk1.R;
import com.example.lx_zk1.bean.Bean;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
import java.util.List;
public class UserAdapter extends BaseAdapter {
private List<Bean.DataBean> list;
private Context context;
public UserAdapter(Context context) {
this.context = context;
list = new ArrayList<>();
}
public void setList(List<Bean.DataBean> list) {
this.list = list;
notifyDataSetChanged();
}
@Override
public int getCount() {
return list.size();
}
@Override
public Bean.DataBean getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null){
convertView = LayoutInflater.from(context).inflate(R.layout.item,parent,false);
holder = new ViewHolder();
holder.imageView = convertView.findViewById(R.id.imageview);
holder.textView = convertView.findViewById(R.id.textview);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
holder.textView.setText(getItem(position).getNews_title());
ImageLoader.getInstance().displayImage(getItem(position).getPic_url(),holder.imageView);
return convertView;
}
class ViewHolder{
private TextView textView;
private ImageView imageView;
}
}
一个Fragment网络请求数据
在这里插入代码片package com.example.lx_zk1.fragment;
import android.annotation.SuppressLint;
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.ListView;
import com.example.lx_zk1.R;
import com.example.lx_zk1.adapter.UserAdapter;
import com.example.lx_zk1.bean.Bean;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
public class SFragment extends Fragment {
private ListView listView;
private UserAdapter adapter;
private List<Bean.DataBean> list;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.sfragment,container,false);
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//获取资源id
listView = view.findViewById(R.id.listview);
//设置适配器
adapter = new UserAdapter(getActivity());
listView.setAdapter(adapter);
initData();
}
private String urlstr = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
private void initData(){
@SuppressLint("StaticFieldLeak") AsyncTask<String, Void, List<Bean.DataBean>> task = new AsyncTask<String, Void, List<Bean.DataBean>>() {
@Override
protected List<Bean.DataBean> doInBackground(String... strings) {
try {
URL url = new URL(urlstr);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
int responseCode = urlConnection.getResponseCode();
if (responseCode==200){
String result = stream2String(urlConnection.getInputStream());
Gson gson = new Gson();
Bean bean = gson.fromJson(result, Bean.class);
return bean.getData();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(List<Bean.DataBean> lists) {
super.onPostExecute(lists);
list = lists;
adapter.setList(lists);
}
}.execute(urlstr);
}
private String stream2String(InputStream inputStream) throws IOException {
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
for (String tmp = bufferedReader.readLine(); tmp != null; tmp = bufferedReader.readLine()){
stringBuilder.append(tmp);
}
return stringBuilder.toString();
}
}
另一个请求数据
在这里插入代码片package com.example.lx_zk1.fragment;
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 com.example.lx_zk1.R;
public class WFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.wfragment,container,false);
return view;
}
}
一个App设置图片的类
在这里插入代码片package com.example.lx_zk1.util;
import android.app.Application;
import android.graphics.Bitmap;
import com.example.lx_zk1.R;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
.memoryCacheSize(10)
.diskCacheSize(10*1024*1024)
.defaultDisplayImageOptions(new DisplayImageOptions.Builder()
.bitmapConfig(Bitmap.Config.RGB_565)
.showImageOnLoading(R.mipmap.ic_launcher)
.showImageOnFail(R.mipmap.ic_launcher)
.showImageForEmptyUri(R.mipmap.ic_launcher)
.cacheOnDisk(true)
.cacheInMemory(true)
.build()
).build();
ImageLoader.getInstance().init(configuration);
}
}