提交 034a6d1f 编写于 作者: 门心叼龙's avatar 门心叼龙

news refresh add

上级 0788e7b6
此差异已折叠。
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="FlyTour" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="java-gradle" name="Java-Gradle">
<configuration>
<option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
<option name="BUILDABLE" value="false" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
......
......@@ -15,6 +15,7 @@ import com.fly.tour.common.R;
import com.fly.tour.common.event.common.BaseFragmentEvent;
import com.fly.tour.common.mvp.BaseView;
import com.fly.tour.common.util.NetUtil;
import com.fly.tour.common.util.log.KLog;
import com.fly.tour.common.view.LoadingInitView;
import com.fly.tour.common.view.LoadingTransView;
import com.fly.tour.common.view.NetErrorView;
......@@ -112,6 +113,9 @@ public abstract class BaseFragment extends Fragment implements BaseView {
private void lazyLoad() {
//这里进行双重标记判断,必须确保onCreateView加载完毕且页面可见,才加载数据
KLog.v("MYTAG","lazyLoad start...");
KLog.v("MYTAG","isViewCreated:"+isViewCreated);
KLog.v("MYTAG","isViewVisable"+isViewVisable);
if (isViewCreated && isViewVisable) {
initData();
//数据加载完毕,恢复标记,防止重复加载
......
......@@ -5,6 +5,7 @@ import android.view.View;
import com.fly.tour.common.mvp.BaseModel;
import com.fly.tour.common.mvp.BaseRefreshPresenter;
import com.fly.tour.common.mvp.BaseRefreshView;
import com.fly.tour.common.util.log.KLog;
import com.refresh.lib.BaseRefreshLayout;
import com.refresh.lib.DaisyRefreshLayout;
......@@ -68,7 +69,9 @@ public abstract class BaseRefreshFragment<M extends BaseModel,V extends BaseRefr
@Override
public void autoLoadData() {
KLog.v("MYTAG","autoLoadData start...");
if(mRefreshLayout != null){
KLog.v("MYTAG","autoLoadData1 start...");
mRefreshLayout.autoRefresh();
}
}
......
......@@ -22,5 +22,11 @@ public interface EventCode {
interface MeCode {
//4000开始
int NEWS_TYPE_ADD = 4000;
int NEWS_TYPE_DELETE = 4001;
int NEWS_TYPE_UPDATE = 4002;
int NEWS_TYPE_QUERY = 4003;
int news_detail_add = 4004;
}
}
package com.fly.tour.common.event.me;
import com.fly.tour.common.event.BaseEvent;
/**
* Description: <NewsDetailCurdEvent><br>
* Author: gxl<br>
* Date: 2019/5/29<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public class NewsDetailCurdEvent extends BaseEvent {
public NewsDetailCurdEvent(int code) {
super(code);
}
}
package com.fly.tour.common.event.me;
import com.fly.tour.common.event.BaseEvent;
/**
* Description: <NewsTypeCrudEvent><br>
* Author: gxl<br>
* Date: 2019/5/29<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public class NewsTypeCrudEvent extends BaseEvent {
public NewsTypeCrudEvent(int code) {
super(code);
}
}
......@@ -28,7 +28,6 @@ public class NewsDBManager {
public static final String TAG = NewsDBManager.class.getSimpleName();
private static NewsDBManager newsDBManager;
private Context mContext;
private List<NewsType> mListNewsType;
private NewsDBManager(Context context) {
mContext = context;
......@@ -46,18 +45,16 @@ public class NewsDBManager {
}
public void initNewsDB() {
NewsTypeDao newsTypeDao = new NewsTypeDao(mContext);
if (newsTypeDao.isEmpty()) {
NewsTypeDao mNewsTypeDao = new NewsTypeDao(mContext);
if (mNewsTypeDao.isEmpty()) {
Gson gson = new Gson();
Type type = new TypeToken<List<NewsType>>() {
}.getType();
mListNewsType = gson.fromJson(getStringByResId(R.raw.news_type), type);
newsTypeDao.addListNewStype(mListNewsType);
}else{
mListNewsType = newsTypeDao.getListNewsType();
List<NewsType> mListNewsType = gson.fromJson(getStringByResId(R.raw.news_type), type);
mNewsTypeDao.addListNewStype(mListNewsType);
}
NewsDetailDao newsDetailDao = new NewsDetailDao(mContext);
if(newsDetailDao.isEmpty()){
if (newsDetailDao.isEmpty()) {
Gson gson = new Gson();
Type type = new TypeToken<List<NewsDetail>>() {
}.getType();
......@@ -83,6 +80,6 @@ public class NewsDBManager {
}
public List<NewsType> getListNewsType() {
return mListNewsType;
return new NewsTypeDao(mContext).getListNewsType();
}
}
......@@ -70,4 +70,9 @@ public class NewsType implements Parcelable {
return new NewsType[size];
}
};
@Override
public String toString() {
return "NewsType{" + "id=" + id + ", typename='" + typename + '\'' + ", addtime='" + addtime + '\'' + '}';
}
}
......@@ -8,12 +8,16 @@ import android.view.View;
import android.widget.Button;
import com.fly.tour.common.base.BaseMvpActivity;
import com.fly.tour.common.event.EventCode;
import com.fly.tour.common.event.me.NewsTypeCrudEvent;
import com.fly.tour.common.util.ToastUtil;
import com.fly.tour.common.view.SettingBarView;
import com.fly.tour.me.contract.NewsTypeAddContract;
import com.fly.tour.me.model.NewsTypeAddModel;
import com.fly.tour.me.presenter.NewsTypeAddPresenter;
import org.greenrobot.eventbus.EventBus;
/**
* Description: <NewsTypeAddActivity><br>
* Author: gxl<br>
......@@ -72,6 +76,7 @@ public class NewsTypeAddActivity extends BaseMvpActivity<NewsTypeAddModel,NewsTy
@Override
public void finishActivity() {
EventBus.getDefault().post(new NewsTypeCrudEvent(EventCode.MeCode.NEWS_TYPE_ADD));
setResult(Activity.RESULT_OK,new Intent());
super.finishActivity();
}
......
......@@ -3,11 +3,14 @@ package com.fly.tour.me.presenter;
import android.content.Context;
import android.os.Handler;
import com.fly.tour.common.event.me.NewsDetailCurdEvent;
import com.fly.tour.common.mvp.BasePresenter;
import com.fly.tour.common.util.ToastUtil;
import com.fly.tour.me.contract.NewsDetailAddContract;
import com.fly.tour.me.model.NewsDetailAddModel;
import org.greenrobot.eventbus.EventBus;
/**
* Description: <NewsDetailAddPresenter><br>
* Author: gxl<br>
......@@ -36,6 +39,7 @@ public class NewsDetailAddPresenter extends BasePresenter<NewsDetailAddModel,New
ToastUtil.showToast("添加成功");
mView.hideTransLoadingView();
mView.finishActivity();
EventBus.getDefault().post(new NewsDetailCurdEvent(type));
}else{
ToastUtil.showToast("添加失败");
}
......
......@@ -2,12 +2,17 @@ package com.fly.tour.me.presenter;
import android.content.Context;
import com.fly.tour.common.event.EventCode;
import com.fly.tour.common.event.me.NewsTypeCrudEvent;
import com.fly.tour.common.mvp.BaseRefreshPresenter;
import com.fly.tour.common.util.ToastUtil;
import com.fly.tour.common.util.log.KLog;
import com.fly.tour.db.entity.NewsType;
import com.fly.tour.me.contract.NewsTypeListContract;
import com.fly.tour.me.model.NewsTypeListModel;
import org.greenrobot.eventbus.EventBus;
import java.util.List;
import java.util.logging.Handler;
......@@ -42,6 +47,7 @@ public class NewsTypeListPresenter extends BaseRefreshPresenter<NewsTypeListMode
@Override
public void run() {
List<NewsType> listNewsType = mModel.getListNewsType();
KLog.v("MYTAG","listNewsType:"+listNewsType.toString());
if (listNewsType != null && listNewsType.size() > 0) {
mView.refreshData(listNewsType);
}else{
......@@ -72,6 +78,7 @@ public class NewsTypeListPresenter extends BaseRefreshPresenter<NewsTypeListMode
if(mModel.deleteNewsTypeById(id)){
ToastUtil.showToast("删除成功");
refreshData();
EventBus.getDefault().post(new NewsTypeCrudEvent(EventCode.MeCode.NEWS_TYPE_DELETE));
}else{
ToastUtil.showToast("删除失败");
}
......
package com.fly.tour.news.fragment;
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.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import com.fly.tour.common.base.BaseFragment;
import com.fly.tour.common.event.me.NewsTypeCrudEvent;
import com.fly.tour.common.manager.NewsDBManager;
import com.fly.tour.common.util.log.KLog;
import com.fly.tour.db.entity.NewsType;
import com.fly.tour.trip.R;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Handler;
/**
* Description: <MainNewsFragment><br>
......@@ -23,20 +34,11 @@ import java.util.List;
*/
public class MainNewsFragment extends BaseFragment {
private List<String> titles = new ArrayList<>();
private List<NewsListFragment> mArrayList = new ArrayList<NewsListFragment>() {
{
List<NewsType> listNewsType = NewsDBManager.getInstance(getContext()).getListNewsType();
if(listNewsType != null && listNewsType.size() > 0){
for(int i = 0; i < listNewsType.size();i++){
NewsType newsType = listNewsType.get(i);
add(NewsListFragment.newInstance(newsType));
titles.add(newsType.getTypename());
}
}
}
};
private List<NewsListFragment> mListFragments = new ArrayList<>();
private TabLayout mTabLayout;
private ViewPager mViewPager;
private NewsFragmentAdapter mNewsFragmentAdapter;
private boolean mIsfresh;
public static MainNewsFragment newInstance() {
return new MainNewsFragment();
......@@ -46,6 +48,7 @@ public class MainNewsFragment extends BaseFragment {
public int onBindLayout() {
return R.layout.fragment_news_main;
}
@Override
public void initView(View view) {
mViewPager = view.findViewById(R.id.pager_tour);
......@@ -62,28 +65,16 @@ public class MainNewsFragment extends BaseFragment {
@Override
public void initListener() {
mViewPager.setOffscreenPageLimit(mArrayList.size());
mViewPager.setAdapter(new FragmentPagerAdapter(getActivity().getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
return mArrayList.get(position);
}
@Override
public int getCount() {
return mArrayList.size();
}
initNewsListFragment();
//mViewPager.setOffscreenPageLimit(mListFragments.size());
mNewsFragmentAdapter = new NewsFragmentAdapter(getChildFragmentManager());
mViewPager.setAdapter(mNewsFragmentAdapter);
mNewsFragmentAdapter.refreshViewPager(mListFragments);
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
});
mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
mArrayList.get(tab.getPosition()).autoLoadData();
mListFragments.get(tab.getPosition()).autoLoadData();
}
@Override
......@@ -99,8 +90,92 @@ public class MainNewsFragment extends BaseFragment {
mTabLayout.setupWithViewPager(mViewPager);
}
class NewsFragmentAdapter extends FragmentPagerAdapter {
public FragmentManager mFragmentManager;
List<NewsListFragment> pages;
public NewsFragmentAdapter(FragmentManager fm) {
super(fm);
mFragmentManager = fm;
}
@Override
public Fragment getItem(int position) {
if (pages != null) {
return pages.get(position);
}
return null;
}
@Override
public int getCount() {
return pages != null ? pages.size() : 0;
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
@Override
public int getItemPosition(@NonNull Object object) {
return POSITION_NONE;
}
public void refreshViewPager(List<NewsListFragment> listFragments) {
if (pages != null && pages.size() > 0) {
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
for (NewsListFragment fragment : pages) {
fragmentTransaction.remove(fragment);
}
fragmentTransaction.commit();
mFragmentManager.executePendingTransactions();
}
pages = listFragments;
notifyDataSetChanged();
mViewPager.setCurrentItem(0);
}
}
private void initNewsListFragment() {
List<NewsType> listNewsType = NewsDBManager.getInstance(getContext()).getListNewsType();
KLog.v("MYTAG", "initNewsListFragment start..." + listNewsType.toString());
mListFragments.clear();
titles.clear();
if (listNewsType != null && listNewsType.size() > 0) {
for (int i = 0; i < listNewsType.size(); i++) {
NewsType newsType = listNewsType.get(i);
mListFragments.add(NewsListFragment.newInstance(newsType));
titles.add(newsType.getTypename());
}
}
}
@Override
public String getToolbarTitle() {
return null;
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(NewsTypeCrudEvent event) {
mIsfresh = true;
}
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
KLog.v("MYTAG", "onHiddenChanged start..." + hidden);
if (mIsfresh && !hidden) {
KLog.v("MYTAG", "ViewPager refresh start...");
mIsfresh = false;
mViewPager.setCurrentItem(mListFragments.size() - 1);
initNewsListFragment();
//mViewPager.setOffscreenPageLimit(mListFragments.size());
mNewsFragmentAdapter.refreshViewPager(mListFragments);
}
}
}
......@@ -10,7 +10,9 @@ import android.view.View;
import com.fly.tour.common.base.BaseFragment;
import com.fly.tour.common.base.BaseRefreshFragment;
import com.fly.tour.common.event.KeyCode;
import com.fly.tour.common.event.me.NewsDetailCurdEvent;
import com.fly.tour.common.mvp.BaseRefreshPresenter;
import com.fly.tour.common.util.log.KLog;
import com.fly.tour.db.entity.NewsDetail;
import com.fly.tour.db.entity.NewsType;
import com.fly.tour.news.adapter.NewsListAdatper;
......@@ -19,6 +21,9 @@ import com.fly.tour.news.model.NewsListModel;
import com.fly.tour.news.presenter.NewsListPresenter;
import com.fly.tour.trip.R;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
/**
......@@ -61,6 +66,7 @@ public class NewsListFragment extends BaseRefreshFragment<NewsListModel,NewsList
@Override
public void initView(View view) {
KLog.v("MYTAG","initView start:"+mNewsType.getTypename());
mRecViewNewsDetail = view.findViewById(R.id.recview_news_list);
mRecViewNewsDetail.setLayoutManager(new LinearLayoutManager(mActivity));
mNewsListAdatper = new NewsListAdatper(mActivity);
......@@ -70,6 +76,7 @@ public class NewsListFragment extends BaseRefreshFragment<NewsListModel,NewsList
@Override
public void initData() {
mPresenter.setNewsType(mNewsType.getId());
KLog.v("MYTAG","initData start:"+mNewsType.getTypename());
autoLoadData();
}
......@@ -114,4 +121,10 @@ public class NewsListFragment extends BaseRefreshFragment<NewsListModel,NewsList
public void loadMoreData(List<NewsDetail> data) {
mNewsListAdatper.addAll(data);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(NewsDetailCurdEvent curdEvent){
if(curdEvent.getCode() == mNewsType.getId()){
autoLoadData();
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册