您的位置:首页 > 其它

TabLayout 和ViewPager和Fragment的多页面滑动

2017-09-20 20:54 357 查看
先导依赖



布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tab"
app:tabGravity="center"
app:tabIndicatorColor="#ff0"
android:background="#000"
app:tabSelectedTextColor="#ff0000"
app:tabTextColor="#aaa"
app:tabMode="scrollable"
app:tabIndicatorHeight="4dp"
/>

<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/pager"
/>

</LinearLayout>


布局
<com.jwenfeng.library.pulltorefresh.PullToRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mpull"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>

<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/list"
></ListView>

</com.jwenfeng.library.pulltorefresh.PullToRefreshLayout>

布局
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/name"
/>

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/img"
/>
</LinearLayout>


主页面

public class MainActivity extends AppCompatActivity {

private TabLayout tab;
private ViewPager pa;
private List<String> list=new ArrayList<String>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//查找控件
tab = (TabLayout) findViewById(R.id.tab);
pa = (ViewPager) findViewById(R.id.pager);
//tab的标题
list.add("头条");
list.add("社会");
list.add("国内");
list.add("国际");
list.add("娱乐");
list.add("体育");
list.add("军事");
list.add("科技");
list.add("财经");
list.add("时尚");
//tablayout和viewpager关联
tab.setupWithViewPager(pa);
//设置viewpager适配器
pa.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
//重写这个方法,将设置每个Tab的标题
@Override
public CharSequence getPageTitle(int position) {

return list.get(position);
}

@Override
public Fragment getItem(int position) {
//一般我们在这个位置对比一下标题是什么,,,然后返回对应的fragment
//初始化fragment  对应position有多少,fragment有多少
NewFragment newFragment = new NewFragment();
Bundle bundle = new Bundle();
if (list.get(position).equals("头条")){
bundle.putString("name","top");
}else if (list.get(position).equals("社会")){
bundle.putString("name","shehui");
}else if (list.get(position).equals("国内")){
bundle.putString("name","guonei");
}else if (list.get(position).equals("国际")){
bundle.putString("name","guoji");
}else if (list.get(position).equals("娱乐")){
bundle.putString("name","yule");
}else if (list.get(position).equals("体育")){
bundle.putString("name","tiyu");
}else if (list.get(position).equals("军事")){
bundle.putString("name","junshi");
}else if (list.get(position).equals("科技")){
bundle.putString("name","keji");
}else if (list.get(position).equals("财经")){
bundle.putString("name","caijing");
}else if (list.get(position).equals("时尚")){
bundle.putString("name","shishang");
}
//给fragment 加bundle 数据
//activity与fragment 1.getset,2.接口回调,3.setArguments ,getAraguments
newFragment.setArguments(bundle);
return newFragment;
}

@Override
public int getCount() {
return list.size();
}
});

}
}


______________________________________________________________

NewFragment类


public class NewFragment extends Fragment {

private ListView list;
private PullToRefreshLayout mpull;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//找到布局文件
View v = View.inflate(getActivity(), R.layout.listview, null);
//ListView控件
list = (ListView)v.findViewById(R.id.list);
mpull = v.findViewById(R.id.mpull);
mpull.setRefreshListener(new BaseRefreshListener() {
@Override
public void refresh() {

new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// 结束刷新

mpull.finishRefresh();
}
}, 2000);
}
@Override
public void loadMore() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// 结束加载更多

mpull.finishLoadMore();
}
}, 2000);
}
});
return v;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Bundle bundle = getArguments();
//接收传递过来的值
String string = bundle.getString("name", "福利");

//调用解析方法
Jiexi(string);

}
//解析方法
private void Jiexi(final String string) {
//使用异步
new AsyncTask<String,Integer,String>(){

@Override
protected String doInBackground(String... strings) {
String str="";
try {
URL url = new URL("http://v.juhe.cn/toutiao/index?type="+string+"&key=8c6e9ca2058eaffcc04bcc4c0f5920c6");
HttpURLConnection conne= (HttpURLConnection) url.openConnection();
conne.setConnectTimeout(5000);
conne.setReadTimeout(5000);
int responseCode = conne.getResponseCode();
if (responseCode==200){
InputStream in = conne.getInputStream();

byte[] by=new byte[1024];
int len=0;

while ((len=in.read(by))!=-1){
str+=new String(by,0,len);
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
@Override
protected void onPostExecute(String s) {
Log.d("zzz","qqqqqqqqqqqqqqqqqq"+s);
//Gson解析
Gson gson = new Gson();
User user = gson.fromJson(s, User.class);
List<User.ResultBean.DataBean> data = user.getResult().getData();
//listview适配器
Myadpader myadpader = new Myadpader(data, getActivity());
list.setAdapter(myadpader);
super.onPostExecute(s);
}
}.execute();
}
}


______________________________________________________________

适配器

public class Myadpader extends BaseAdapter {

private List<User.ResultBean.DataBean> data;
private Context context;

public Myadpader(List<User.ResultBean.DataBean> data, Context context) {
this.data = data;
this.context = context;
}

@Override
public int getCount() {
return data.size();
}

@Override
public Object getItem(int i) {
return null;
}

@Override
public long getItemId(int i) {
return 0;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
Hondera hondera=null;
if (view==null){
hondera = new Hondera();
view=  View.inflate(context,R.layout.ziti,null);
hondera.name=view.findViewById(R.id.name);
hondera.img= view.findViewById(R.id.img);

view.setTag(hondera);
}else{
hondera = (Hondera) view.getTag();
}
hondera.name.setText(data.get(i).getTitle());

ImageLoader.getInstance().displayImage(data.get(i).getThumbnail_pic_s(),hondera.img);

return view;
}

class Hondera{

TextView name;
ImageView img;
}
}


获取图片

public class App extends Application {

@Override
public void onCreate() {
DisplayImageOptions options = new DisplayImageOptions.Builder()
//设置图片在下载期间显示的图片
.showImageOnLoading(R.mipmap.ic_launcher)
.displayer(new FadeInBitmapDisplayer(2000)).cacheOnDisk(true)
//设置下载的图片是否缓存在内存中
.cacheInMemory(true).build();

ImageLoaderConfiguration configs = new ImageLoaderConfiguration.Builder(
this).defaultDisplayImageOptions(options).threadPoolSize(5)
.build();

ImageLoader.getInstance().init(configs);
super.onCreate();
}
}


效果



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐