抽基类与PullToRefreshListView

主页面XML

<?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
xmlns:tools=“http://schemas.android.com/tools
android:id="@+id/clz"
android:layout_width=“match_parent”
android:layout_height=“match_parent”
tools:context=".ui.Main2Activity">


<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width=“match_parent”
android:layout_height=“0dp”
android:layout_weight=“9” />

   <android.support.design.widget.BottomNavigationView
       android:id="@+id/navigation"
       android:layout_width="match_parent"
       android:layout_weight="1"
       android:layout_height="0dp"
       android:layout_marginStart="0dp"
       android:layout_marginEnd="0dp"
       android:background="?android:attr/windowBackground"
       app:layout_constraintBottom_toBottomOf="parent"
       app:layout_constraintLeft_toLeftOf="parent"
       app:layout_constraintRight_toRightOf="parent"
       app:menu="@menu/navigation" />
主页面 package com.example.moniweekzk3.ui;

import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.Gravity;
import android.view.MenuItem;
import android.widget.FrameLayout;
import android.widget.TextView;

import com.example.moniweekzk3.R;
import com.example.moniweekzk3.fragment.FragmentCelai;
import com.example.moniweekzk3.fragment.FragmentOne;
import com.example.moniweekzk3.fragment.FragmentTwo;

public class Main2Activity extends BaseActivity {

private TextView mTextMessage;

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.navigation_home:
                pager.setCurrentItem(0);
                return true;
            case R.id.navigation_dashboard:
                pager.setCurrentItem(1);
                return true;
            case R.id.navigation_notifications:
                pager.setCurrentItem(2);
                return true;
            case R.id.navigation_yc:
                pager.setCurrentItem(3);
                return true;
            case R.id.navigation_wd:
                pager.setCurrentItem(4);
                return true;
        }
        return false;
    }
};
private ViewPager pager;
private BottomNavigationView navigation;
private FrameLayout claxm;
private DrawerLayout clz;
private ActionBarDrawerToggle toggle;
@Override
protected int getContentView() {
    return R.layout.activity_main2;
}

@Override
protected void initData() {

}

protected void initView() {
    pager = (ViewPager) findViewById(R.id.pager);
    navigation = (BottomNavigationView) findViewById(R.id.navigation);
    claxm = (FrameLayout) findViewById(R.id.claxm);
    clz = (DrawerLayout) findViewById(R.id.clz);
    pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
        @Override
        public Fragment getItem(int i) {
            switch (i){
                case 0:
                    return new FragmentTwo();
                case 1:
                    return new FragmentOne();
                case 2:
                    return new FragmentTwo();
                case 3:
                    return new FragmentTwo();
                case 4:
                    return new FragmentTwo();
            }
            return null;
        }

        @Override
        public int getCount() {
            return 5;
        }
    });

    mTextMessage = (TextView) findViewById(R.id.message);
    final BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
    pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int i, float v, int i1) {

        }

        @Override
        public void onPageSelected(int i) {
        switch (i){
            case 0:
                navigation.setSelectedItemId(R.id.navigation_home);
                return;
            case 1:
                navigation.setSelectedItemId(R.id.navigation_dashboard);
                return;
            case 2:
                navigation.setSelectedItemId(R.id.navigation_notifications);
                return;
            case 3:
                navigation.setSelectedItemId(R.id.navigation_yc);
                return;
            case 4:
                navigation.setSelectedItemId(R.id.navigation_wd);
                return;
        }
        }

        @Override
        public void onPageScrollStateChanged(int i) {

        }
    });
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.claxm,new FragmentCelai())
            .commit();
    toggle=new ActionBarDrawerToggle(this,clz,R.string.drawable_padfdd,R.string.drawable_color);
    toggle.syncState();
    clz.addDrawerListener(toggle);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (toggle.onOptionsItemSelected(item)){
        return true;
    }
    return super.onOptionsItemSelected(item);
}
public void dainj(){
    clz.closeDrawer(Gravity.START);
}
public void liand(int i){
    pager.setCurrentItem(i);
    dainj();
}

}
侧拉主页面
package com.example.moniweekzk3.fragment;

import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

import com.example.moniweekzk3.R;
import com.example.moniweekzk3.adapter.MyClAdapter;
import com.example.moniweekzk3.ui.Main2Activity;

public class FragmentCelai extends Basefragment {

private ListView lv;
private MyClAdapter myClAdapter;

@Override
protected int getContent() {
    return R.layout.fragmentclai;
}

@Override
protected void initData() {

}

@Override
protected void initView(View view) {
    lv = view.findViewById(R.id.lv);
    myClAdapter = new MyClAdapter(getActivity());
    lv.setAdapter(myClAdapter);
    lv.setOnItemClickListener(null);
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if (position==0){
                ((Main2Activity)getActivity()).dainj();
            }
            ((Main2Activity)getActivity()).liand(position-1);
        }
    });
}

}
侧拉适配器
package com.example.moniweekzk3.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.moniweekzk3.R;

public class MyClAdapter extends BaseAdapter {
private Context context;
private String[] str;
private final int one=0;
private final int two=1;

public MyClAdapter(Context context) {
    this.context = context;
    str=context.getResources().getStringArray(R.array.page_name);
}

@Override
public int getCount() {
    return str.length+1;
}

@Override
public String getItem(int position) {
    if (position==0){
        return "";
    }
    return str[position-1];
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (getItemViewType(position)==one){
        ViewHolder viewHolder;
        if (convertView==null){
            convertView=LayoutInflater.from(context).inflate(R.layout.clshu,parent,false);
            viewHolder=new ViewHolder(convertView);
        }else {
            viewHolder= (ViewHolder) convertView.getTag();
        }
        viewHolder.text.setText("靖建涛");
    }else {
        ViewHolder1 viewHolder1;
        if (convertView==null){
            convertView=LayoutInflater.from(context).inflate(R.layout.clshu1,parent,false);
            viewHolder1=new ViewHolder1(convertView);
        }else {
            viewHolder1= (ViewHolder1) convertView.getTag();
        }
        viewHolder1.text.setText(getItem(position));
    }
    return convertView;
}
class ViewHolder{
    TextView text;
    ImageView img;
    public ViewHolder(View v){
        this.text=v.findViewById(R.id.text);
        this.img=v.findViewById(R.id.img);
        v.setTag(this);
    }
}
class ViewHolder1{
    TextView text;
    public ViewHolder1(View v){
        this.text=v.findViewById(R.id.text);
        v.setTag(this);
    }
}

@Override
public int getViewTypeCount() {
    return 2;
}

@Override
public int getItemViewType(int position) {
    if (position==one){
        return one;
    }else {
        return two;
    }
}

}
侧拉添加

moniweekzk3
Main2Activity
首页
电影
影院
演出
我的
drawable_padfdd
drawable_color

@string/title_home
@string/title_dashboard
@string/title_notifications
@string/title_yc
@string/title_wd


fragmentOneXML

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout xmlns:android=“http://schemas.android.com/apk/res/android
android:layout_width=“match_parent”
android:layout_height=“match_parent”
xmlns:app=“http://schemas.android.com/apk/res-auto
android:background="#3399ff">

<android.support.design.widget.TabLayout
    android:id="@+id/tab"
    android:layout_height="wrap_content"
    android:layout_width="0dp"
    app:layout_constraintBottom_toTopOf="@id/pager"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:tabSelectedTextColor="@android:color/holo_red_dark"/>
<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_height="0dp"
    android:layout_width="0dp"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintTop_toBottomOf="@id/tab"/>

</android.support.constraint.ConstraintLayout>
Basefragment
package com.example.moniweekzk3.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;

public abstract class Basefragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(getContent(),container,false);
}

protected abstract int getContent();

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    initView(view);

}

protected abstract void initData();

protected abstract void initView(View view);

}
BaseActivity
package com.example.moniweekzk3.ui;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getContentView());
initView();
initData();
}

protected abstract void initData();

protected abstract void initView();

protected abstract int getContentView();

}

fragmentOne主页面
package com.example.moniweekzk3.fragment;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.moniweekzk3.R;
import com.example.moniweekzk3.adapter.HomePageAdapter;

public class FragmentOne extends Fragment {

private ViewPager pager;
private TabLayout tab;
private HomePageAdapter homePageAdapter;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view=inflater.inflate(R.layout.fragmentone,container,false);
    return view;
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    pager = view.findViewById(R.id.pager);
    tab = view.findViewById(R.id.tab);
    homePageAdapter = new HomePageAdapter(getChildFragmentManager());
    pager.setAdapter(homePageAdapter);
    tab.setupWithViewPager(pager);
}

}
头部导航(tabLoader)适配器
package com.example.moniweekzk3.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.moniweekzk3.fragment.FragmentJjsy;
import com.example.moniweekzk3.fragment.FragmentZzsy;

public class HomePageAdapter extends FragmentPagerAdapter {
private String[] names=new String[]{
“正在热映”,“即将上映”
};
public HomePageAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int i) {
    switch (i){
        case 0:
            return new FragmentZzsy();
        default:
            return new FragmentJjsy();
    }
}

@Override
public int getCount() {
    return names.length;
}

@Nullable
@Override
public CharSequence getPageTitle(int position) {
    return names[position];
}

}
Fragment页面适配器
package com.example.moniweekzk3.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.moniweekzk3.R;
import com.example.moniweekzk3.user.Users;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.recker.flybanner.FlyBanner;

import java.util.ArrayList;
import java.util.List;

public class MyZhuAdapter extends BaseAdapter {
private Context context;
private List<Users.ResultBean> list;
private final int one=0;
private final int two=1;
private String[] imgerUrl={
https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1545405711&di=851926c621b91552f7042b4bb2d61fa5&imgtype=jpg&er=1&src=http%3A%2F%2Fattach.bbs.miui.com%2Fforum%2F201205%2F03%2F01400598djmyeczcskh2yr.jpg”,
https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3950488706,4087864940&fm=26&gp=0.jpg”,
https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1544811088717&di=42f2a45192476e549e3f3ff36551c3b7&imgtype=0&src=http%3A%2F%2Fimg2.shuaijiao.com%2Fimages%2F2013%2F1116%2F20131116092057301.jpg”,
https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1544811109349&di=b0cc783114dd3899a317df33d48b2a82&imgtype=0&src=http%3A%2F%2Ff2.dn.anqu.com%2Fdown%2FZDU3Zg%3D%3D%2Fallimg%2F1211%2F17-121113152Z1.jpg
};
private final DisplayImageOptions options;

public MyZhuAdapter(Context context) {
    this.context = context;
    this.list=new ArrayList<>();
    options = new DisplayImageOptions
            .Builder()
            .cacheInMemory(true)
            .cacheOnDisk(true)
            .build();
}

public void setList(List<Users.ResultBean> list) {
    if (list!=null){
        this.list = list;
    }
    notifyDataSetChanged();
}
public void addList(List<Users.ResultBean> list1) {
    if (list!=null){
        list.addAll(list1);
    }
    notifyDataSetChanged();
}

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

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

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (getItemViewType(position)==one){
        ViewHolder viewHolder;
        if (convertView==null){
            convertView=LayoutInflater.from(context).inflate(R.layout.shu1,parent,false);
            viewHolder=new ViewHolder();
            viewHolder.fly=convertView.findViewById(R.id.fly);
            convertView.setTag(viewHolder);
        }else {
            viewHolder= (ViewHolder) convertView.getTag();
        }
        List<String> imgUrl=new ArrayList<>();
        for (int i=0;i<imgerUrl.length;i++){
            imgUrl.add(imgerUrl[i]);
        }
        viewHolder.fly.setImagesUrl(imgUrl);
    }else {
        ViewHolder1 viewHolder1;
        if (convertView==null){
            convertView=LayoutInflater.from(context).inflate(R.layout.shangy,parent,false);
            viewHolder1=new ViewHolder1();
            viewHolder1.name=convertView.findViewById(R.id.name);
            viewHolder1.summary=convertView.findViewById(R.id.summary);
            viewHolder1.img=convertView.findViewById(R.id.img);
            convertView.setTag(viewHolder1);
        }else {
            viewHolder1= (ViewHolder1) convertView.getTag();
        }
        viewHolder1.name.setText(list.get(position).getName());
        viewHolder1.summary.setText(list.get(position).getSummary());
        ImageLoader.getInstance().displayImage(list.get(position).getImageUrl(),viewHolder1.img,options);
    }
    return convertView;
}
class ViewHolder{
    FlyBanner fly;
}
class ViewHolder1{
    TextView name,summary;
    ImageView img;
}

@Override
public int getViewTypeCount() {
    return 2;
}

@Override
public int getItemViewType(int position) {
    if (position==one){
        return one;
    }else {
        return two;
    }
}

}
fragment主页面
package com.example.moniweekzk3.fragment;

import android.os.AsyncTask;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;

import com.example.moniweekzk3.R;
import com.example.moniweekzk3.adapter.MyZhuAdapter;
import com.example.moniweekzk3.nuti.Netliter;
import com.example.moniweekzk3.user.Users;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

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.util.ArrayList;
import java.util.List;

public class FragmentZzsy extends Basefragment {

private PullToRefreshListView plv;
private MyZhuAdapter myZhuAdapter;
private int page;
private int ling=0;
private final int count=10;
private String auiUrl="http://172.17.8.100/movieApi/movie/v1/findHotMovieList?count=10&page=";

@Override
protected int getContent() {
    return R.layout.fragmentzzsy;
}

@Override
protected void initView(View view) {
    plv = view.findViewById(R.id.plv);
    if (new Netliter().isIntent(getActivity())) {
        myZhuAdapter = new MyZhuAdapter(getActivity());
        plv.setAdapter(myZhuAdapter);
        plv.setMode(PullToRefreshListView.Mode.BOTH);
        plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                page = 1;
                initData();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                initData();
            }
        });
        page = 1;
        initData();
    }else {
        Toast.makeText(getActivity(),"无网络",ling=0).show();
    }
}
@Override
protected void initData() {
    new Netliter().getquert3(auiUrl+page,Users.class, new Netliter.Nettoerr<Users>() {
        @Override
        public void onSUccess(Users o) {
            Users users=o;
            List<Users.ResultBean> result = users.getResult();
            if (result==null){
                plv.onRefreshComplete();
                return;
            }
            if (page==1){
                myZhuAdapter.setList(o.getResult());
            }else {
                myZhuAdapter.addList(o.getResult());
            }
            plv.onRefreshComplete();
            page++;
        }

        @Override
        public void onFail(String msg) {

        }
    });
}

}
抽基类
package com.example.moniweekzk3.nuti;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;

import com.example.moniweekzk3.user.Users;
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.URL;
import java.util.ArrayList;
import java.util.List;

public class Netliter {
public interface Nettoerr{
void onSUccess( T o);
void onFail(String msg);
}
public void getquert3(final String auiUrl, final Class classa, final Nettoerr nettoerr){
new AsyncTask<String, Void, Object>() {
@Override
protected Object doInBackground(String… strings) {
return getquert2(strings[0],classa);
}

        @Override
        protected void onPostExecute(Object o) {
            if (o==null){
                nettoerr.onFail("请求失败");
            }else {
                nettoerr.onSUccess(o);
            }
        }
    }.execute(auiUrl);
}
private <T> T getquert2(String auiUrl,Class classa){
    Object obj=null;
    String requert = getquert(auiUrl);
    obj=new Gson().fromJson(requert,classa);
    return (T) obj;
}
public String getquert(String auiUrl){
    String requer="";
    try {
        URL url=new URL(auiUrl);
        HttpURLConnection urlConnection= (HttpURLConnection) url.openConnection();
        if (urlConnection.getResponseCode()==200){
            InputStream inputStream = urlConnection.getInputStream();
            requer= staunch2String(inputStream);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return requer;
}
public boolean isIntent(Context context){
    ConnectivityManager cm= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = cm.getActiveNetworkInfo();
    return activeNetworkInfo!=null&&activeNetworkInfo.isAvailable();
}
public String staunch2String(InputStream inputStream) throws IOException {
    StringBuffer stringBuffer = new StringBuffer();
    InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
    for(String tmp=bufferedReader.readLine();tmp!=null;tmp=bufferedReader.readLine()){
        stringBuffer.append(tmp);
    }
    return stringBuffer.toString();
}

}
侧拉XML

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout 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”
xmlns:app=“http://schemas.android.com/apk/res-auto”>

<TextView
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toRightOf="@id/img"
    android:text="asdsadsad"
    app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值