Banner+DrawerLayout+Tablayout+PullTofresh+Fragment(Viewpage)
来源:互联网 发布:电脑电话营销软件 编辑:程序博客网 时间:2024/06/05 16:03
一,先在 manifrsts 写权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
二,在 <application 里面写
android:name=".MApp"
三,添加依赖
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.android.support:design:26+'
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
compile 'com.youth.banner:banner:1.4.9'
注意:有gson的依赖,就不用导Gson包
四,布局
main:里布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/dv"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.bawei.chenkai.chenkai20171023.MainActivity">
<ListView
android:id="@+id/lv"
android:layout_width="240dp"
android:layout_height="match_parent"
android:choiceMode="singleChoice"
android:divider="#000"
android:layout_gravity="start"
android:dividerHeight="1dp"
android:background="#007efe">
</ListView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/fl_main"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9" />
<RadioGroup
android:id="@+id/rg"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<RadioButton
android:id="@+id/but1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="首页" />
<RadioButton
android:id="@+id/but2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="发现" />
<RadioButton
android:id="@+id/but3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="下载" />
<RadioButton
android:id="@+id/but4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="我的" />
</RadioGroup>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
2,banner_header :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
>
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="vertical"/>
</LinearLayout>
3,fragment01 :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.TabLayout
android:id="@+id/tl_titles"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"/>
</LinearLayout>
4,fragment02 :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#44ff44">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="发现"
android:textSize="30sp"
/>
</LinearLayout>
5,fragment03 :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="下载"
android:textSize="30sp"
/>
</LinearLayout>
6,fragment04 :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff3660">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="我的"
android:textSize="30sp"
/>
</LinearLayout>
7,item0 :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/plv"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
8,listview :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
一,MainActivity :主方法里
public class MainActivity extends AppCompatActivity {
private RadioGroup rg;
private ArrayList<Fragment> list = new ArrayList<Fragment>();
private FragmentManager supportFragmentManager;
private DrawerLayout drawerLayout;
private ListView lv;
ArrayList<String> list1 = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//使用内部类
initFragment();
//初始化组件
rg = (RadioGroup) findViewById(R.id.rg);
drawerLayout= (DrawerLayout) findViewById(R.id.dv);
lv = (ListView) findViewById(R.id.lv);
getData();
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l){
drawerLayout.closeDrawer(lv);
}
});
//使用使用者
supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fl_main, list.get(0)).commit();
//设置监听
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {
switch (i) {
case R.id.but1:
supportFragmentManager.beginTransaction().replace(R.id.fl_main, new Fragment01()).commit();
break;
case R.id.but2:
getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new Fragment02()).commit();
break;
case R.id.but3:
getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new Fragment03()).commit();
break;
case R.id.but4:
getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new Fragment04()).commit();
}
}
});
}
private void getData() {
for (int i = 0; i <10 ; i++) {
list1.add("item"+i);
}
//自定义适配器
ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,list1);
lv.setAdapter(mAdapter);
}
private void initFragment() {
for (int i = 0; i <4 ; i++) {
list.add(new Fragment01());
}
}
}
二,ChildFragment :方法里
public class ChildFragment extends Fragment {
int page = 0;
private PullToRefreshListView plv;
private MAdapter mAdapter;
String baseUrl = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0";
private List<News.DataBean> list = new ArrayList<News.DataBean>();
String[] imagUrls = {"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",
"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",
"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",
"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",
"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg"};
private ListView lv;
private Banner banner;
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//加载布局
View view = inflater.inflate(R.layout.item0, null);
View header_banner = inflater.inflate(R.layout.banner_header, null);
//初始化组件
banner = (Banner) header_banner.findViewById(R.id.banner);
plv = (PullToRefreshListView) view.findViewById(R.id.plv);
//添加头部布局
lv = plv.getRefreshableView();
lv.addHeaderView(header_banner);
return view;
}
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getNetData(page);//获取list集合的方法;
getBanner();
//主线程继续往下走,和刚才开启的线程互不影响;0.0001
//添加适配器
mAdapter = new MAdapter();
lv.setAdapter(mAdapter);
plv.setMode(PullToRefreshBase.Mode.BOTH);//上下拉都支持
//设置监听
plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase){
list.clear();
getNetData(0);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
page++;
getNetData(20);
}
});
}
private void getBanner() {
banner.setImages(Arrays.asList(imagUrls));//设置图片集合
banner.setImageLoader(new BannerLoader());
banner.start();
}
private void getNetData(int page) {
new MAsync().execute(baseUrl + page);
}
//设置适配器
class MAdapter extends BaseAdapter {
@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 view, ViewGroup viewGroup) {
view = View.inflate(getActivity(), R.layout.listview, null);
ImageView imageview = (ImageView) view.findViewById(R.id.image);
TextView tv = (TextView) view.findViewById(R.id.tv);
tv.setText(list.get(i).getTITLE());
ImageLoader.getInstance().displayImage((String) list.get(i).getIMAGEURL(), imageview
); return view; } } class MAsync extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... strings) { return NetWordUtils.getNetjson(strings[0]); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); News news = gson.fromJson(s, News.class); List<News.DataBean> data = news.getData(); list.addAll(data); mAdapter.notifyDataSetChanged(); plv.onRefreshComplete(); } } private class BannerLoader implements ImageLoaderInterface { @Override public void displayImage(Context context, Object path, View imageView) { ImageLoader instance = ImageLoader.getInstance(); instance.displayImage((String) path, (ImageView) imageView); } @Override public View createImageView(Context context) { return null; } }}
三,Fragment01 :方法里
public class Fragment01 extends Fragment {
private TabLayout tabLayout;
private ViewPager viewpager;
ArrayList<Fragment> list=new ArrayList<Fragment>();
String[] temp={"推荐","课程","实战","职业路径"};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment01,null);
tabLayout = (TabLayout) view.findViewById(R.id.tl_titles);
viewpager = (ViewPager) view.findViewById(R.id.viewpager);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
indata();
MYaptera mYapter = new MYaptera(getChildFragmentManager());
tabLayout.setTabMode(TabLayout.MODE_FIXED);
tabLayout.setupWithViewPager(viewpager);
viewpager.setAdapter(mYapter);
}
private void indata() {
for (int i = 0; i < 4; i++) {
list.add(new ChildFragment());
}
}
class MYaptera extends FragmentPagerAdapter {
public MYaptera(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return list.size();
}
@Override
public CharSequence getPageTitle(int position) {
return temp[position];
}
}
}
四,Fragment02,Fragment03,Fragment04 :方法里,只需要改03,04
public class Fragment02 extends Fragment {
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment02, null);
return view;
}
}
五,MApp :方法里
public class MApp extends Application {
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration imageLoaderConfiguration=new ImageLoaderConfiguration.Builder(this).build();
ImageLoader.getInstance().init(imageLoaderConfiguration);
}
}
六,NetWordUtils :方法里
/**
* author:Created by WangZhiQiang on 2017/10/23.
*/
public class NetWordUtils {
private static String tag = "NetWordUtils";
/**
* 获取网络json
*
* @param urlString
* @return
*/
public static String getNetjson(String urlString) {
try {
URL url = new URL(urlString);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");//若果是get请求可以不用配置; 其他请求必须配置
urlConnection.setConnectTimeout(8000);//设置链接超时间
InputStream inputStream = urlConnection.getInputStream();//获取网络返回的输入流;
//可拼接的字符串
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String temp = "";
while ((temp = bufferedReader.readLine()) != null) {
stringBuilder.append(temp);
temp = "";
}
//这个是网络获取的数据
String data = stringBuilder.toString();
Log.e(tag, "getData: " + data);
return data;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
/**
* 获取网络图片的工具类
*
* @param urlString
* @return
*/
public static Bitmap getNetBitmap(String urlString) {
try {
//用URL封装链接地址;
URL url = new URL(urlString);
//用url打开链接
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//联网的状态码
int responseCode = urlConnection.getResponseCode();
if(responseCode ==200){
//链接上获取输入流
InputStream inputStream = urlConnection.getInputStream();
//把流直接转换成bitmap(系统提供的BitmapFactory)
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);//BitmapFactory是个工具类,系统提供的
return bitmap;
}else {
Log.e(tag, "网络状态码:: "+responseCode );
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
七,News :方法里
接口要解析的内容,但是注意 ChildFragment 要需要改改
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
二,在 <application 里面写
android:name=".MApp"
三,添加依赖
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.android.support:design:26+'
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
compile 'com.youth.banner:banner:1.4.9'
注意:有gson的依赖,就不用导Gson包
四,布局
main:里布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/dv"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.bawei.chenkai.chenkai20171023.MainActivity">
<ListView
android:id="@+id/lv"
android:layout_width="240dp"
android:layout_height="match_parent"
android:choiceMode="singleChoice"
android:divider="#000"
android:layout_gravity="start"
android:dividerHeight="1dp"
android:background="#007efe">
</ListView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/fl_main"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9" />
<RadioGroup
android:id="@+id/rg"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<RadioButton
android:id="@+id/but1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="首页" />
<RadioButton
android:id="@+id/but2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="发现" />
<RadioButton
android:id="@+id/but3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="下载" />
<RadioButton
android:id="@+id/but4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="我的" />
</RadioGroup>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
2,banner_header :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
>
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="vertical"/>
</LinearLayout>
3,fragment01 :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.TabLayout
android:id="@+id/tl_titles"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"/>
</LinearLayout>
4,fragment02 :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#44ff44">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="发现"
android:textSize="30sp"
/>
</LinearLayout>
5,fragment03 :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="下载"
android:textSize="30sp"
/>
</LinearLayout>
6,fragment04 :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff3660">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="我的"
android:textSize="30sp"
/>
</LinearLayout>
7,item0 :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/plv"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
8,listview :里布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
一,MainActivity :主方法里
public class MainActivity extends AppCompatActivity {
private RadioGroup rg;
private ArrayList<Fragment> list = new ArrayList<Fragment>();
private FragmentManager supportFragmentManager;
private DrawerLayout drawerLayout;
private ListView lv;
ArrayList<String> list1 = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//使用内部类
initFragment();
//初始化组件
rg = (RadioGroup) findViewById(R.id.rg);
drawerLayout= (DrawerLayout) findViewById(R.id.dv);
lv = (ListView) findViewById(R.id.lv);
getData();
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l){
drawerLayout.closeDrawer(lv);
}
});
//使用使用者
supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fl_main, list.get(0)).commit();
//设置监听
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {
switch (i) {
case R.id.but1:
supportFragmentManager.beginTransaction().replace(R.id.fl_main, new Fragment01()).commit();
break;
case R.id.but2:
getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new Fragment02()).commit();
break;
case R.id.but3:
getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new Fragment03()).commit();
break;
case R.id.but4:
getSupportFragmentManager().beginTransaction().replace(R.id.fl_main, new Fragment04()).commit();
}
}
});
}
private void getData() {
for (int i = 0; i <10 ; i++) {
list1.add("item"+i);
}
//自定义适配器
ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,list1);
lv.setAdapter(mAdapter);
}
private void initFragment() {
for (int i = 0; i <4 ; i++) {
list.add(new Fragment01());
}
}
}
二,ChildFragment :方法里
public class ChildFragment extends Fragment {
int page = 0;
private PullToRefreshListView plv;
private MAdapter mAdapter;
String baseUrl = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0";
private List<News.DataBean> list = new ArrayList<News.DataBean>();
String[] imagUrls = {"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",
"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",
"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",
"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg",
"http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg"};
private ListView lv;
private Banner banner;
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//加载布局
View view = inflater.inflate(R.layout.item0, null);
View header_banner = inflater.inflate(R.layout.banner_header, null);
//初始化组件
banner = (Banner) header_banner.findViewById(R.id.banner);
plv = (PullToRefreshListView) view.findViewById(R.id.plv);
//添加头部布局
lv = plv.getRefreshableView();
lv.addHeaderView(header_banner);
return view;
}
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getNetData(page);//获取list集合的方法;
getBanner();
//主线程继续往下走,和刚才开启的线程互不影响;0.0001
//添加适配器
mAdapter = new MAdapter();
lv.setAdapter(mAdapter);
plv.setMode(PullToRefreshBase.Mode.BOTH);//上下拉都支持
//设置监听
plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase){
list.clear();
getNetData(0);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
page++;
getNetData(20);
}
});
}
private void getBanner() {
banner.setImages(Arrays.asList(imagUrls));//设置图片集合
banner.setImageLoader(new BannerLoader());
banner.start();
}
private void getNetData(int page) {
new MAsync().execute(baseUrl + page);
}
//设置适配器
class MAdapter extends BaseAdapter {
@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 view, ViewGroup viewGroup) {
view = View.inflate(getActivity(), R.layout.listview, null);
ImageView imageview = (ImageView) view.findViewById(R.id.image);
TextView tv = (TextView) view.findViewById(R.id.tv);
tv.setText(list.get(i).getTITLE());
ImageLoader.getInstance().displayImage((String) list.get(i).getIMAGEURL(), imageview
); return view; } } class MAsync extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... strings) { return NetWordUtils.getNetjson(strings[0]); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); News news = gson.fromJson(s, News.class); List<News.DataBean> data = news.getData(); list.addAll(data); mAdapter.notifyDataSetChanged(); plv.onRefreshComplete(); } } private class BannerLoader implements ImageLoaderInterface { @Override public void displayImage(Context context, Object path, View imageView) { ImageLoader instance = ImageLoader.getInstance(); instance.displayImage((String) path, (ImageView) imageView); } @Override public View createImageView(Context context) { return null; } }}
三,Fragment01 :方法里
public class Fragment01 extends Fragment {
private TabLayout tabLayout;
private ViewPager viewpager;
ArrayList<Fragment> list=new ArrayList<Fragment>();
String[] temp={"推荐","课程","实战","职业路径"};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment01,null);
tabLayout = (TabLayout) view.findViewById(R.id.tl_titles);
viewpager = (ViewPager) view.findViewById(R.id.viewpager);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
indata();
MYaptera mYapter = new MYaptera(getChildFragmentManager());
tabLayout.setTabMode(TabLayout.MODE_FIXED);
tabLayout.setupWithViewPager(viewpager);
viewpager.setAdapter(mYapter);
}
private void indata() {
for (int i = 0; i < 4; i++) {
list.add(new ChildFragment());
}
}
class MYaptera extends FragmentPagerAdapter {
public MYaptera(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return list.size();
}
@Override
public CharSequence getPageTitle(int position) {
return temp[position];
}
}
}
四,Fragment02,Fragment03,Fragment04 :方法里,只需要改03,04
public class Fragment02 extends Fragment {
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment02, null);
return view;
}
}
五,MApp :方法里
public class MApp extends Application {
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration imageLoaderConfiguration=new ImageLoaderConfiguration.Builder(this).build();
ImageLoader.getInstance().init(imageLoaderConfiguration);
}
}
六,NetWordUtils :方法里
/**
* author:Created by WangZhiQiang on 2017/10/23.
*/
public class NetWordUtils {
private static String tag = "NetWordUtils";
/**
* 获取网络json
*
* @param urlString
* @return
*/
public static String getNetjson(String urlString) {
try {
URL url = new URL(urlString);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");//若果是get请求可以不用配置; 其他请求必须配置
urlConnection.setConnectTimeout(8000);//设置链接超时间
InputStream inputStream = urlConnection.getInputStream();//获取网络返回的输入流;
//可拼接的字符串
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String temp = "";
while ((temp = bufferedReader.readLine()) != null) {
stringBuilder.append(temp);
temp = "";
}
//这个是网络获取的数据
String data = stringBuilder.toString();
Log.e(tag, "getData: " + data);
return data;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
/**
* 获取网络图片的工具类
*
* @param urlString
* @return
*/
public static Bitmap getNetBitmap(String urlString) {
try {
//用URL封装链接地址;
URL url = new URL(urlString);
//用url打开链接
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//联网的状态码
int responseCode = urlConnection.getResponseCode();
if(responseCode ==200){
//链接上获取输入流
InputStream inputStream = urlConnection.getInputStream();
//把流直接转换成bitmap(系统提供的BitmapFactory)
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);//BitmapFactory是个工具类,系统提供的
return bitmap;
}else {
Log.e(tag, "网络状态码:: "+responseCode );
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
七,News :方法里
接口要解析的内容,但是注意 ChildFragment 要需要改改
阅读全文
0 0
- Banner+DrawerLayout+Tablayout+PullTofresh+Fragment(Viewpage)
- Banner+DrawerLayout+Tablayout+PullTofresh+Fragment(Viewpage)
- DrawerLayout+Tablayout+PullTofresh+Fragment(Viewpage)
- DrawerLayout+Tablayout+PullTofresh+Fragment(Viewpage)
- PullToRefreshListView+Tablayout+Fragment+DrawerLayout
- TabLayout+ViewPage+Fragment的使用
- Android Fragment viewPage TabLayout用法。
- TabLayout+ViewPage+Fragment简单使用的方法
- Android Tablayout和viewpage fragment连用
- TabLayout和Bundle传值viewpage Fragment
- DrawerLayout+TabLayout+ViewPager+RadioButton+Fragment+pullToRefresh+ImageLoader
- Tablayout+Viewpage
- TabLayout+ViewPage
- TabLayout+ViewPage
- viewpage+fragment+tablayout+imageloder(代码)+适配+权限+依赖
- DrawerLayout + tablayout
- lastmonthexam——DrawerLayout+TabLayout+ViewPager+PullToRefresh+Fragment+TypeTkken
- android项目Tab标签页面大汇总(Fragment、Fragment+ViewPage、TabLayout)
- VIM 退出 的 常用命令
- 51 nod 1020 逆序排列(递推+DP)
- 自定义HIVE-UDF函数
- Linux下安装OpenOffice
- Qt学习之路: QPainter
- Banner+DrawerLayout+Tablayout+PullTofresh+Fragment(Viewpage)
- tabLayout和ViewPager的滑动关联 以及tabLayout和ViewPager的布局
- 支持FLIR红外摄像头和可见光摄像头的网络转换板的方案设计
- mysql远程连接(navicat连接 10038,1045错误)
- 深度学习基础(一)
- DirectX 10学习笔记3: Buffers,Shaders以及HLSL
- 图标字体的制作
- 单进程服务器(python版)
- php文件操作 读取写入操作