Android——ViewPager+Fragment+ListView之间
源码下载地址: https://github.com/kkman2008/viewpagerSample

-
<span style="font-size:18px;">package com.example.jreduch05; -
import android.os.Bundle; -
import android.support.v4.app.Fragment; -
import android.support.v4.view.ViewPager; -
import android.support.v7.app.AppCompatActivity; -
import com.astuetz.PagerSlidingTabStrip; -
import com.example.jreduch05.adapter.MyVpFragmentAdapter; -
import com.example.jreduch05.fragment.VpFragmentLv; -
import java.util.ArrayList; -
import java.util.List; -
public class VpFragmentLvActivity extends AppCompatActivity { -
private ViewPager vp; -
private PagerSlidingTabStrip pst; -
@Override -
protected void onCreate(Bundle savedInstanceState) { -
super.onCreate(savedInstanceState); -
setContentView(R.layout.activity_vp_fragment_lv); -
getSupportActionBar().hide(); -
vp=(ViewPager)findViewById(R.id.vp); -
pst= (PagerSlidingTabStrip) findViewById(R.id.pst); -
List<Fragment> list=new ArrayList<>(); -
List<String> titles=new ArrayList<>(); -
titles.add("推荐"); -
titles.add("热点"); -
titles.add("烟台"); -
titles.add("视频"); -
titles.add("订阅"); -
titles.add("体育"); -
titles.add("娱乐"); -
titles.add("奥运"); -
titles.add("财经"); -
titles.add("国际"); -
for (int i=1;i<=10;i++){ -
Fragment fragment=new VpFragmentLv(); -
Bundle bundle=new Bundle(); -
bundle.putInt("arg",i); -
fragment.setArguments(bundle); -
list.add(fragment); -
} -
MyVpFragmentAdapter ma=new MyVpFragmentAdapter( -
getSupportFragmentManager(),list,titles); -
vp.setAdapter(ma); -
pst.setIndicatorColor(getResources().getColor(R.color.colorPrimary)); -
pst.setIndicatorHeight(5); -
pst.setAllCaps(true); -
pst.setShouldExpand(true);//平分 -
pst.setTextColor(getResources().getColor(R.color.colorAccent)); -
pst.setViewPager(vp); -
} -
} -
</span>
-
<?xml version="1.0" encoding="utf-8"?> -
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" -
android:orientation="vertical" android:layout_width="match_parent" -
android:layout_height="match_parent"> -
<RelativeLayout -
android:layout_width="match_parent" -
android:layout_height="50dp" -
android:background="#ef4848" -
android:id="@+id/rr" -
> -
<TextView -
android:layout_width="wrap_content" -
android:layout_height="wrap_content" -
android:layout_weight="1" -
android:gravity="center" -
android:text="今日头条@" -
android:textSize="26sp" -
android:textColor="#ffffff" -
android:layout_alignParentEnd="true" -
android:layout_alignParentStart="true" -
android:layout_alignParentTop="true" -
android:layout_alignParentBottom="true" /> -
<ImageView -
android:layout_width="wrap_content" -
android:layout_height="wrap_content" -
android:src="@mipmap/base_main_action_personal_normal" -
android:id="@+id/imageView" -
android:layout_alignParentStart="true" -
android:layout_alignParentTop="true" -
android:layout_alignParentBottom="true" /> -
<ImageView -
android:layout_width="wrap_content" -
android:layout_height="wrap_content" -
android:src="@mipmap/right_drawer_normal" -
android:id="@+id/imageView2" -
android:layout_alignParentTop="true" -
android:layout_alignParentEnd="true" -
android:layout_alignParentBottom="true" /> -
</RelativeLayout> -
<com.astuetz.PagerSlidingTabStrip -
android:layout_width="match_parent" -
android:layout_height="50dp" -
android:id="@+id/pst" -
android:layout_below="@+id/rr" -
></com.astuetz.PagerSlidingTabStrip> -
<LinearLayout -
android:layout_width="match_parent" -
android:layout_height="wrap_content" -
android:orientation="horizontal" -
android:layout_below="@+id/pst" -
android:id="@+id/ll" -
> -
<TextView -
android:layout_width="wrap_content" -
android:layout_height="30dp" -
android:text="2016.08.09" -
android:layout_marginLeft="20dp" -
/> -
<TextView -
android:layout_width="wrap_content" -
android:layout_height="30dp" -
android:text="星期二" -
android:layout_marginLeft="50dp" -
/> -
<TextView -
android:layout_width="wrap_content" -
android:layout_height="30dp" -
android:text="今天" -
android:layout_marginLeft="120dp" -
/> -
</LinearLayout> -
<android.support.v4.view.ViewPager -
android:layout_width="match_parent" -
android:layout_height="wrap_content" -
android:id="@+id/vp" -
android:layout_below="@+id/ll" -
></android.support.v4.view.ViewPager> -
</RelativeLayout>
-
package com.example.jreduch05.fragment; -
import android.content.Intent; -
import android.os.Bundle; -
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.AdapterView; -
import android.widget.ListView; -
import com.example.jreduch05.IntentActivity; -
import com.example.jreduch05.R; -
import com.example.jreduch05.adapter.MyListAdapter; -
import com.example.jreduch05.entity.News; -
import java.util.ArrayList; -
import java.util.List; -
/** -
* A simple {@link Fragment} subclass. -
*/ -
public class VpFragmentLv extends Fragment { -
public VpFragmentLv() { -
// Required empty public constructor -
} -
@Override -
public View onCreateView(LayoutInflater inflater, ViewGroup container, -
Bundle savedInstanceState) { -
// Inflate the layout for this fragment -
return inflater.inflate(R.layout.fragment_vp_fragment_lv, container, false); -
} -
@Override -
public void onActivityCreated (@Nullable Bundle savedInstanceState){ -
super.onActivityCreated(savedInstanceState); -
// TextView tv=(TextView)getView().findViewById(R.id.tv); -
ListView lv = (ListView) getView().findViewById(R.id.lv); -
final List<News> list = new ArrayList<>(); -
MyListAdapter ma = new MyListAdapter(list, getActivity()); -
lv.setAdapter(ma); -
final Bundle bundle = getArguments(); -
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { -
@Override -
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { -
News news = list.get(i); -
Intent intent = new Intent(getActivity(), IntentActivity.class); -
intent.putExtra("obj", news); -
Bundle b1 = new Bundle(); -
b1.putString("arg1", "今天七月七"); -
intent.putExtra("bundle", b1); -
startActivity(intent); -
} -
}); -
if (bundle != null) { -
int arg = bundle.getInt("arg"); -
// tv.setText("我是Fagment"+arg); -
switch (arg) { -
case 1: -
for (int i = 0; i < 20; i++) { -
list.add(new News("体育新闻" + i, "今天", "0001", R.mipmap.zyfzyf, "新浪网")); -
ma.notifyDataSetChanged(); -
} -
break; -
case 2: -
for (int i = 0; i < 20; i++) { -
list.add(new News("烟台新闻" + i, "今天", "0002", R.mipmap.zyf, "新浪网")); -
ma.notifyDataSetChanged(); -
} -
break; -
case 3: -
for (int i = 0; i < 20; i++) { -
list.add(new News("奥运新闻" + i, "今天", "0002", R.mipmap.zz, "新浪网")); -
ma.notifyDataSetChanged(); -
} -
break; -
} -
} -
} -
}
-
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" -
xmlns:tools="http://schemas.android.com/tools" -
android:layout_width="match_parent" -
android:layout_height="match_parent" -
tools:context="com.example.jreduch05.fragment.VpFragmentLv"> -
<!-- TODO: Update blank fragment layout --> -
<ListView -
android:layout_width="match_parent" -
android:layout_height="match_parent" -
android:id="@+id/lv" -
> -
</ListView> -
</FrameLayout>
-
package com.example.jreduch05.entity; -
import android.os.Parcel; -
import android.os.Parcelable; -
import java.io.Serializable; -
/** -
* Created by 冲天之峰 on 2016/8/9. -
*/ -
//implements Serializable 接口 -
//Parcelable Android 独有的 -
public class News implements Parcelable{ -
private String title; -
private String pubDate; -
// private String newId; -
private int img; -
private String from; -
public News(String title, String pubDate, String newId, int img, String from) { -
this.title = title; -
this.pubDate = pubDate; -
// this.newId = newId; -
this.img = img; -
this.from = from; -
} -
protected News(Parcel in) { -
title = in.readString(); -
pubDate = in.readString(); -
img = in.readInt(); -
from = in.readString(); -
} -
public static final Creator<News> CREATOR = new Creator<News>() { -
@Override -
public News createFromParcel(Parcel in) { -
return new News(in); -
} -
@Override -
public News[] newArray(int size) { -
return new News[size]; -
} -
}; -
public String getTitle() { -
return title; -
} -
public void setTitle(String title) { -
this.title = title; -
} -
public String getFrom() { -
return from; -
} -
public void setFrom(String from) { -
this.from = from; -
} -
public int getImg() { -
return img; -
} -
public void setImg(int img) { -
this.img = img; -
} -
// public String getNewId() { -
// return newId; -
// } -
// -
// public void setNewId(String newId) { -
// this.newId = newId; -
// } -
public String getPubDate() { -
return pubDate; -
} -
public void setPubDate(String pubDate) { -
this.pubDate = pubDate; -
} -
@Override -
public int describeContents() { -
return 0; -
} -
@Override -
public void writeToParcel(Parcel parcel, int i) { -
parcel.writeString(title); -
parcel.writeString(pubDate); -
parcel.writeInt(img); -
parcel.writeString(from); -
} -
}
-
package com.example.jreduch05.adapter; -
import android.support.v4.app.Fragment; -
import android.support.v4.app.FragmentManager; -
import android.support.v4.app.FragmentPagerAdapter; -
import java.util.List; -
/** -
* Created by 冲天之峰 on 2016/8/9. -
*/ -
public class MyVpFragmentAdapter extends FragmentPagerAdapter { -
private List<Fragment> list; -
private List<String> titles; -
public MyVpFragmentAdapter(FragmentManager fm, List<Fragment> list, List<String> titles) { -
super(fm); -
this.list= list; -
this.titles= titles; -
} -
@Override -
public Fragment getItem(int position) { -
return list.get(position); -
} -
@Override -
public int getCount() { -
return list.size(); -
} -
@Override -
public CharSequence getPageTitle(int position) { -
return titles.get(position); -
} -
}


-
package com.example.jreduch05; -
import android.support.v4.app.Fragment; -
import android.support.v4.app.FragmentTabHost; -
import android.support.v4.view.ViewPager; -
import android.support.v7.app.AppCompatActivity; -
import android.os.Bundle; -
import android.view.View; -
import android.widget.ImageView; -
import android.widget.TabHost; -
import android.widget.TextView; -
import com.example.jreduch05.adapter.MyTabHostAdapter; -
import com.example.jreduch05.fragment.TabHostFragment; -
import java.util.ArrayList; -
import java.util.List; -
public class FragmentTabHostActivity extends AppCompatActivity { -
private ViewPager vp; -
private FragmentTabHost ft; -
private String[] str={"首页","消息","更多","好友","搜索"}; -
private int[] imgRes={R.drawable.home, -
R.drawable.meassage,R.drawable.more,R.drawable.selfinfo,R.drawable.square}; -
@Override -
protected void onCreate(Bundle savedInstanceState) { -
super.onCreate(savedInstanceState); -
setContentView(R.layout.activity_fragment_tab_host); -
vp=(ViewPager)findViewById(R.id.vp); -
ft=(FragmentTabHost)findViewById(R.id.ft); -
init(); -
} -
private void init() { -
List<Fragment> list=new ArrayList<>(); -
// -
ft.setup(this,getSupportFragmentManager()); -
for(int i=0;i<str.length;i++){ -
Fragment fragment=new TabHostFragment(); -
Bundle bundle=new Bundle(); -
bundle.putInt("arg",i); -
TabHost.TabSpec tabSpec=ft.newTabSpec(str[i]).setIndicator(getView(i)); -
fragment.setArguments(bundle); -
ft.addTab(tabSpec,fragment.getClass(),null); -
list.add(fragment); -
} -
MyTabHostAdapter mha=new MyTabHostAdapter(getSupportFragmentManager(),list); -
vp.setAdapter(mha); -
ft.setOnTabChangedListener(new TabHost.OnTabChangeListener() { -
@Override -
public void onTabChanged(String s) { -
vp.setCurrentItem(ft.getCurrentTab()); -
} -
}); -
vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { -
@Override -
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { -
} -
@Override -
public void onPageSelected(int position) { -
ft.setCurrentTab(position); -
} -
@Override -
public void onPageScrollStateChanged(int state) { -
} -
}); -
} -
public View getView(int i){ -
View v=getLayoutInflater().inflate(R.layout.tab_layout,null); -
ImageView iv=(ImageView)v.findViewById(R.id.iv); -
iv.setImageResource(imgRes[i]); -
TextView tv=(TextView)v.findViewById(R.id.tv); -
tv.setText(str[i]); -
return v; -
} -
}
-
<?xml version="1.0" encoding="utf-8"?> -
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" -
xmlns:tools="http://schemas.android.com/tools" -
android:layout_width="match_parent" -
android:layout_height="match_parent" -
android:orientation="vertical" -
tools:context="com.example.jreduch05.FragmentTabHostActivity"> -
<android.support.v4.view.ViewPager -
android:layout_width="match_parent" -
android:layout_height="0dp" -
android:layout_weight="1" -
android:id="@+id/vp" -
></android.support.v4.view.ViewPager> -
<android.support.v4.app.FragmentTabHost -
android:layout_width="match_parent" -
android:layout_height="wrap_content" -
android:id="@+id/ft" -
></android.support.v4.app.FragmentTabHost> -
</LinearLayout>
-
package com.example.jreduch05.fragment; -
import android.os.Bundle; -
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.TextView; -
import com.example.jreduch05.R; -
/** -
* A simple {@link Fragment} subclass. -
*/ -
public class TabHostFragment extends Fragment { -
public TabHostFragment() { -
// Required empty public constructor -
} -
@Override -
public View onCreateView(LayoutInflater inflater, ViewGroup container, -
Bundle savedInstanceState) { -
// Inflate the layout for this fragment -
return inflater.inflate(R.layout.fragment_tab_host, container, false); -
} -
@Override -
public void onActivityCreated(@Nullable Bundle savedInstanceState) { -
super.onActivityCreated(savedInstanceState); -
TextView tv=(TextView)getView().findViewById(R.id.tv); -
Bundle bundle=getArguments(); -
if (bundle!=null){ -
int arg=bundle.getInt("arg"); -
tv.setText("我是Fragment"+(arg+1)); -
} -
} -
}
-
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" -
xmlns:tools="http://schemas.android.com/tools" -
android:layout_width="match_parent" -
android:layout_height="match_parent" -
tools:context="com.example.jreduch05.fragment.TabHostFragment"> -
<!-- TODO: Update blank fragment layout --> -
<TextView -
android:layout_width="match_parent" -
android:layout_height="match_parent" -
android:text="@string/hello_blank_fragment" -
android:id="@+id/tv" -
android:gravity="center" -
/> -
</FrameLayout>
-
package com.example.jreduch05.adapter; -
import android.support.v4.app.Fragment; -
import android.support.v4.app.FragmentManager; -
import android.support.v4.app.FragmentPagerAdapter; -
import java.util.List; -
/** -
* Created by 冲天之峰 on 2016/8/9. -
*/ -
public class MyTabHostAdapter extends FragmentPagerAdapter { -
private List<Fragment> list; -
public MyTabHostAdapter(FragmentManager fm, List<Fragment> list) { -
super(fm); -
this.list= list; -
} -
@Override -
public Fragment getItem(int position) { -
return list.get(position); -
} -
@Override -
public int getCount() { -
return list.size(); -
} -
}
-
<?xml version="1.0" encoding="utf-8"?> -
<selector xmlns:android="http://schemas.android.com/apk/res/android"> -
<item android:drawable="@mipmap/icon_home_sel" -
android:state_selected="true"></item> -
<item android:drawable="@mipmap/icon_home_nor"></item> -
</selector>



本文介绍了一个关于Android中ViewPager与Fragment结合使用的实例,通过代码展示了如何实现带标签的页面切换效果,并利用ListView填充数据,同时提供了自定义适配器的具体实现。
1306

被折叠的 条评论
为什么被折叠?



