ViewPager+fragment切换页面及懒加载

1.工具类
public class HttpUtils {
public final Api api;
//单例
private static HttpUtils httpUtils=null;
public static HttpUtils getInstance(){
httpUtils = new HttpUtils();
return httpUtils;
}
//私有化的构造方法
private HttpUtils(){
//创建OkHttpClient对象
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.writeTimeout(5,TimeUnit.SECONDS)
.readTimeout(5,TimeUnit.SECONDS)
.addNetworkInterceptor(new LogginInterceptor())
.build();
//创建retrofit对象
Retrofit retrofit = new Retrofit
.Builder()
//baseUrl(“就是写接口固定不变的前半部分”)
.baseUrl(“http://172.17.8.100/”)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(okHttpClient)
.build();
//实例化接口
api = retrofit.create(Api.class);
}
//拦截器
private class LogginInterceptor implements Interceptor {
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
Request request = chain.request();
RequestBody body = request.body();
Headers headers = request.headers();
okhttp3.Response response = chain.proceed(request);
Headers headers1 = response.headers();
return response;
}
}
public boolean Iswork(Context context)
{
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = manager.getActiveNetworkInfo();
return activeNetworkInfo!=null && activeNetworkInfo.isAvailable();}
}
2.接口
(1)public interface MainView {
void Pm(T t);
}

(2)public interface ShopView {
void Pm(T t);
}
3.presenter层
public abstract class Basepresenter {
V view;

public V getView() {
    return view;
}

public void setView(V view) {
    this.view = view;
}
public void detachView()
{
    this.view = null;
}

}
4.BaseActivity
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getView());
initView();
initDate();
showView();
}
public abstract int getView();
public abstract void initView();
public abstract void initDate();
public abstract void showView();
}
5.MainActivity
public class MainActivity extends BaseActivity {
@BindView(R.id.viewpager)
ViewPager viewPager;
@BindView(R.id.group)
RadioGroup radioGroup;
private ArrayList list;
private HomeFrag homeFrag;
private ShopCartFrag two;
private MineFrag three;
private Unbinder unbinder;
@Override
public int getView() {
return R.layout.activity_main;
}
@Override
public void initView() {
unbinder = ButterKnife.bind(this);
}
@Override
public void initDate() {
list = new ArrayList<>();
homeFrag = new HomeFrag();
two = new ShopCartFrag();
three = new MineFrag();
list.add(homeFrag);
list.add(two);
list.add(three);
}
@Override
public void showView() {
viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int i) {
return list.get(i);
}

        @Override
        public int getCount() {
            return list.size();
        }
    });
    radioGroup.check(radioGroup.getChildAt(0).getId());
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int i, float v, int i1) {

        }

        @Override
        public void onPageSelected(int i) {
            radioGroup.check(radioGroup.getChildAt(i).getId());
        }

        @Override
        public void onPageScrollStateChanged(int i) {

        }
    });
    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            switch (checkedId){
                case R.id.r1: viewPager.setCurrentItem(0);break;
                case R.id.r2: viewPager.setCurrentItem(1);break;
                case R.id.r3: viewPager.setCurrentItem(2);break;
            }

        }
    });
}
@Override
protected void onDestroy() {
    super.onDestroy();
    unbinder.unbind();
}

}

//布局

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


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






/三个Fragment页面
(1)public class HomeFrag extends Fragment implements MainView {

private EditText shu;
private Button suosou;
private SearchHistroyView searchHistroyView;
private TextView qing;
private RecyclerView li_recy;
private Presentersearch presenter;
private SearchAdapter liAdapter;
private TextView textView;
//1.Fragment的View加载完毕的标记
private boolean isViewCreated;
//2.Fragment对用户可见的标记
private boolean isUIVisible;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = LayoutInflater.from(getActivity()).inflate(R.layout.home, container, false);
    presenter = new Presentersearch();
    presenter.setView(this);
    shu = view.findViewById(R.id.shu);
    suosou = view.findViewById(R.id.sou);
    textView = view.findViewById(R.id.tiao);
    textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getActivity(), CartActivity.class);
            startActivity(intent);
        }
    });
    searchHistroyView = view.findViewById(R.id.search_history);
    qing = view.findViewById(R.id.qing);
    li_recy = view.findViewById(R.id.li_recy);
    li_recy.setLayoutManager(new LinearLayoutManager(getActivity()));
    liAdapter = new SearchAdapter(getActivity());
    li_recy.setAdapter(liAdapter);
    shu.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
             searchHistroyView.setVisibility(View.VISIBLE);
             qing.setVisibility(View.VISIBLE);
             li_recy.setVisibility(View.GONE);
        }
    });
    suosou.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Editable text= shu.getText();
            String name1 = text.toString();
                if (isViewCreated && isUIVisible) {
                    presenter.loadDate(name1,1,10);
                    isViewCreated = false;
                    isUIVisible = false;
                }
            TextView textView = new TextView(getActivity());
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT);
            layoutParams.setMargins(100,10,10,10);//4个参数按顺序分别是左上右下
            textView.setText(text);
            searchHistroyView.addView(textView);
        }
    });
    qing.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            searchHistroyView.removeAllViews();
        }
    });
    return view;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
        isUIVisible = true;
    } else {
        isUIVisible = false;
    }
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    isViewCreated = true;
}

@Override
public void Pm(Object o) {
    SearchBean li = (SearchBean) o;
    List<SearchBean.ResultBean> result = li.getResult();
    qing.setVisibility(View.GONE);
    searchHistroyView.setVisibility(View.GONE);
    li_recy.setVisibility(View.VISIBLE);
    liAdapter.getDate(result);
}
@Override
public void onDestroy() {
    super.onDestroy();
    presenter.detachView();
}

}
(2)public class ShopCartFrag extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = LayoutInflater.from(getActivity()).inflate(R.layout.cart, container, false);
return view;
}
}
(3)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值