大数据接口、新闻搜索

This commit is contained in:
itgaojian 2023-03-08 17:44:41 +08:00
parent 530c9ae01c
commit bf8a7502f4
30 changed files with 695 additions and 109 deletions

View File

@ -111,6 +111,7 @@ public class PathConfig {
public static final String PATH_MODULE_MAIN_NEWS_WEB = "/modulemain/activity/newsweb";//连接新闻页
public static final String PATH_MODULE_MAIN_NEWS_DETAIL_INTERFACE = "/modulemain/activity/newsInterface";//新闻详情页面-接口方式
public static final String PATH_MODULE_MAIN_NEWS_SEARCH = "/modulemain/activity/newsSearch";//新闻收搜
//======================Map==================================================
public static final String PATH_MODULE_MAP_NAVIGATION = "/modulemap/activity/navigation";//地图
public static final String PATH_MODULE_MAP_SHOW_ICON = "/modulemap/activity/showicon";//文化地图

View File

@ -9,11 +9,11 @@ import com.sucstepsoft.cm_utils.constant.PathConfig;
*/
public class BaseUrlApi {
// public static final String IP_URL = "http://v3.xzszwhy.cn/";/* 测试IP */
public static final String IP_URL = "http://192.168.0.120:8081/";/* 测试IP */
public static final String IP_URL = "http://v3.xzszwhy.cn/";/* 测试IP */
// public static final String IP_URL = "http://192.168.0.120:8081/";/* 测试IP */
public static final String BASE_SYSTEM_IP = "http://192.168.0.120:8081/xzszwhy/";/*测试IP*/
// public static final String BASE_SYSTEM_IP = "http://v3.xzszwhy.cn/xzszwhy/";/*正式IP*/
// public static final String BASE_SYSTEM_IP = "http://192.168.0.120:8081/xzszwhy/";/*测试IP*/
public static final String BASE_SYSTEM_IP = "http://v3.xzszwhy.cn/xzszwhy/";/*正式IP*/
public static final String PROJECT_NAME = "app/";
public static final String BASE_URL = BASE_SYSTEM_IP;
@ -55,12 +55,12 @@ public class BaseUrlApi {
public static final String BASE_VOLUNTEER_IP = BASE_SYSTEM_IP;/* 志愿者 */
public static final String BASE_LIVE_IP = IP_URL + "live/";
public static final String BASE_BIG_DATA = "http://v3.xzszwhy.cn/" + "module/";//大数据接口
public static final String BASE_BIG_DATA = IP_URL + "module/";//大数据接口
public static final String BASE_LIVE_URL = BASE_SYSTEM_IP;//直播回放视频url
public static final String BASE_CULTURAL_SHARE = BASE_SYSTEM_IP;/* 文化分享 */
public static final String BASE_LEGACY_IP = BASE_SYSTEM_IP;//非遗数据库
public static final String BASE_NEWS_IP = BASE_SYSTEM_IP;//新闻
public static final String BASE_SHOP_IP = IP_URL + "xzshop";//商城
public static final String BASE_SHOP_IP = IP_URL + "xzshop/";//商城
// public static final String BASE_PLACE_IP = TEMP_IP + "venuebooking/";/* 场馆 */
public static final String BASE_PLACE_IMG_IP = BASE_PLACE_IP + "route/file/download/true/";/* 场馆 */
public static final String BASE_CULTURAL_IP = BASE_SYSTEM_IP + "culturalactivity/";/* 文化URL */
@ -69,8 +69,8 @@ public class BaseUrlApi {
// public static final String BASE_NEWS_DETAIL = "http://192.168.0.104/";//新闻
// public static final String BASE_NEWS_DETAIL = IP_URL;//新闻
public static final String BASE_NEWS_DETAIL = "http://192.168.0.120:80/";//新闻
public static final String BASE_NEWS_DETAIL = IP_URL;//新闻
// public static final String BASE_NEWS_DETAIL = "http://192.168.0.120:80/";//新闻
// public static final String BASE_IMG_URL = BASE_IP + "route/file/download/true/";
// GET /app/appversion/downloadapp/{appVersionId}
public static final String APP_DOWNLOAD_URL = BASE_URL + "app/appversion/download/" + PathConfig.APP_VERSION_ID;

View File

@ -34,6 +34,7 @@ import retrofit2.http.PUT;
import retrofit2.http.Part;
import retrofit2.http.PartMap;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.Url;
/**
@ -312,4 +313,15 @@ public interface BaseApiService {
@Headers({"Content-Type:application/json", "Accept:application/json"})
@GET("app/area/getrelease/{areaId}")
Observable<AreaBean> getAreaDetail(@Path("areaId") String pId);
/**
* 大数据-浏览量
* 详情浏览量 (网页|安卓|小程序)[a-zA-Z0-9-]{36}(新闻|活动|非遗|场馆|直播|志愿) 我后台正则是这样的
* 搜索词 安卓QUERY要搜索的内容END
*
* @return
*/
@Headers({"base_url_name:bigdata", "Content-Type:application/json", "Accept:application/json"})
@GET("app/contentcensusrelease/log")
Observable<BaseSuccessBean> bigDataRead(@Query("requestUrl") String id);
}

View File

@ -36,7 +36,10 @@ import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.sucstepsoft.cm_utils.R;
import com.sucstepsoft.cm_utils.constant.PathConfig;
import com.sucstepsoft.cm_utils.core.beans.BaseSuccessBean;
import com.sucstepsoft.cm_utils.core.beans.UserLoginBean;
import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager;
import com.sucstepsoft.cm_utils.core.retrofit_net.api.BaseApiService;
import com.sucstepsoft.cm_utils.core.widget.views.BaseAreaListDialog;
import com.sucstepsoft.cm_utils.core.widget.views.DoubleAndOneClicklistener;
import com.sucstepsoft.cm_utils.core.widget.views.TypeFaceTextView;
@ -51,6 +54,11 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
/**
* 作者 : Adam on 2018/10/15.
* 邮箱 : itgaojian@163.com
@ -142,6 +150,40 @@ public abstract class BaseActivity extends AppCompatActivity {
}
/**
* 大数据-详情浏览
*
* @param params
*/
protected void bigDataRead(String params) {
RetrofitManager.getInstance()
.create(BaseApiService.class)
.bigDataRead(params)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseSuccessBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(BaseSuccessBean baseSuccessBean) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
/**
* 设置只能输入汉字.字母.数字
*

Binary file not shown.

After

Width:  |  Height:  |  Size: 921 B

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<padding
android:bottom="1dp"
/>
<solid android:color="#40CCCCCC" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<padding
android:bottom="1dp"
/>
<solid android:color="#30CCCCCC" />
</shape>
</item>
<item>
<shape>
<solid android:color="#FFFFFF" />
</shape>
</item>
</layer-list>

View File

@ -164,8 +164,8 @@
<ImageView
android:id="@+id/iv_app_into"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_width="25dp"
android:layout_height="25dp"
android:src="@drawable/ic_map_icon" />
</LinearLayout>
</RelativeLayout>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="8dp">
<ImageView
android:id="@+id/iv_search_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_back_black" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_weight="1"
android:background="@drawable/shp_rectangle_gray"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="8dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_search_icon" />
<EditText
android:id="@+id/et_search_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:background="@null"
android:hint="请输入关键字"
android:imeOptions="actionSearch"
android:padding="5dp"
android:singleLine="true"
android:textSize="@dimen/text_14" />
</LinearLayout>
<com.sucstepsoft.cm_utils.core.widget.views.TypeFaceTextView
android:id="@+id/tv_search_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:clickable="true"
android:focusable="true"
android:text="搜索" />
</LinearLayout>

View File

@ -30,4 +30,5 @@
<string name="android_auto_update_download_progress">正在下载:%1$d%%</string>
<string name="android_auto_update_dialog_checking">正在检查版本</string>
<string name="big_data_str">安卓%1$s%2$s%3$s</string>
</resources>

View File

@ -153,6 +153,9 @@ public class ActivityDetailActivity extends BaseActivity {
} else {
getActivityDetailByIdToken(mId);
}
String read = String.format(getResources().getString(R.string.big_data_str), "", mId, "活动");
LogUtils.e(read);
bigDataRead(read);
}
/**

View File

@ -89,6 +89,9 @@ public class CulturalLiveDetailActivity extends BaseActivity {
getLiveDetail(id);
});
mSrlContent.setEnableLoadMore(false);
String read = String.format(getResources().getString(R.string.big_data_str), "", id, "直播");
LogUtils.e(read);
bigDataRead(read);
}
private void getLiveDetail(String id) {

View File

@ -1,7 +1,6 @@
package com.tengshisoft.modulecultural.activitys;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
@ -19,17 +18,11 @@ import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager;
import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity;
import com.sucstepsoft.cm_utils.core.widget.base.GlideRoundTransform;
import com.sucstepsoft.cm_utils.utils.ExceptionHandler;
import com.sucstepsoft.cm_utils.utils.LogUtils;
import com.tengshisoft.modulecultural.R;
import com.tengshisoft.modulecultural.R2;
import com.tengshisoft.modulecultural.bean.CulturalLiveDetailBean;
import com.tengshisoft.modulecultural.net.CulturalApi;
import com.tengshisoft.moduleijkplayer.controller.CompleteView;
import com.tengshisoft.moduleijkplayer.controller.ErrorView;
import com.tengshisoft.moduleijkplayer.controller.GestureView;
import com.tengshisoft.moduleijkplayer.controller.LiveControlView;
import com.tengshisoft.moduleijkplayer.controller.PrepareView;
import com.tengshisoft.moduleijkplayer.controller.StandardVideoController;
import com.tengshisoft.moduleijkplayer.controller.TitleView;
import butterknife.BindView;
import butterknife.ButterKnife;
@ -73,6 +66,9 @@ public class CulturalLiveLookBackActivity extends BaseActivity {
mSrlContent.setEnableRefresh(false);
mSrlContent.setEnableLoadMore(false);
getLiveDetail(id);
String read = String.format(getResources().getString(R.string.big_data_str), "", id, "直播");
LogUtils.e(read);
bigDataRead(read);
}
/**

View File

@ -109,6 +109,9 @@ public class LegacyDetailActivity extends BaseActivity {
.placeholder(R.drawable.ic_img_default_banner)
.transform(roundedCornersTransform);
getLegacyDetail(id);
String read = String.format(getResources().getString(R.string.big_data_str), "", id, "非遗");
LogUtils.e(read);
bigDataRead(read);
}
/**

View File

@ -27,6 +27,7 @@ import com.sucstepsoft.cm_utils.core.widget.base.BaseBannerImageAdapter;
import com.sucstepsoft.cm_utils.core.widget.views.TypeFaceTextView;
import com.sucstepsoft.cm_utils.utils.ConvertUtils;
import com.sucstepsoft.cm_utils.utils.ExceptionHandler;
import com.sucstepsoft.cm_utils.utils.LogUtils;
import com.sucstepsoft.cm_utils.utils.UIUtil;
import com.sucstepsoft.cm_utils.utils.UserLgUtils;
import com.sucstepsoft.cm_utils.utils.toast.ToastUtils;
@ -154,6 +155,9 @@ public class VolunteerActivityDetailActivity extends BaseActivity {
.navigation();
}
});
String read = String.format(getResources().getString(R.string.big_data_str), "", mId, "志愿");
LogUtils.e(read);
bigDataRead(read);
}
/**

View File

@ -33,6 +33,12 @@
<application
android:maxAspectRatio="2.4"
android:resizeableActivity="true">
<activity
android:name=".cultural.activitys.news.NewsSearchActivity"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name=".cultural.activitys.news.NewsLocalDetailActivity"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout"

View File

@ -39,7 +39,6 @@ import com.google.gson.Gson;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.sucstepsoft.cm_utils.constant.PathConfig;
import com.sucstepsoft.cm_utils.core.beans.AddPhotoBean;
import com.sucstepsoft.cm_utils.core.beans.BaseSuccessBean;
import com.sucstepsoft.cm_utils.core.retrofit_net.BaseUrlApi;
import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager;
import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity;
@ -350,40 +349,11 @@ public class NewsDetailActivity extends BaseActivity {
.navigation();
}
});
doSaveRead();
String read = String.format(getResources().getString(R.string.big_data_str), "", mNId, "新闻");
LogUtils.e(read);
bigDataRead(read);
}
/**
* 保存浏览量
*/
private void doSaveRead() {
RetrofitManager.getInstance()
.create(HomeApi.class)
.doSaveRead("安卓" + mNId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseSuccessBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(BaseSuccessBean baseSuccessBean) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
private void showShareDialog() {
BottomDialogShareView shareView = new BottomDialogShareView.DialogBuilder(mActivity).build();

View File

@ -2,12 +2,14 @@ package com.tengshisoft.mudulemain.cultural.activitys.news;
import android.graphics.Color;
import android.text.TextUtils;
import android.view.View;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.bumptech.glide.Glide;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.sucstepsoft.cm_utils.constant.PathConfig;
import com.sucstepsoft.cm_utils.core.retrofit_net.BaseUrlApi;
@ -88,6 +90,15 @@ public class NewsListActivity extends BaseActivity {
getNewsListByType(mCurrentPage);
}
});
mLlImg.setVisibility(View.VISIBLE);
Glide.with(mActivity)
.load(R.drawable.ic_search_icon_white)
.into(mIvInto);
mIvInto.setOnClickListener(v -> ARouter.getInstance()
.build(PathConfig.PATH_MODULE_MAIN_NEWS_SEARCH)
.withString("id", mType)
.withBoolean("isTab", false)
.navigation());
mAdapter.addOnItemClickByType(this::showNewsDetail);
if (!TextUtils.isEmpty(UserLgUtils.getToken())) {
getNewsListByTypeToken(mCurrentPage);

View File

@ -296,40 +296,12 @@ public class NewsLocalDetailActivity extends BaseActivity {
}
});
getNewsDetail();
doSaveRead();
String read = String.format(getResources().getString(R.string.big_data_str), "", mNId, "新闻");
LogUtils.e(read);
bigDataRead(read);
}
/**
* 保存浏览量
*/
private void doSaveRead() {
RetrofitManager.getInstance()
.create(HomeApi.class)
.doSaveRead("APP" + mNId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseSuccessBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(BaseSuccessBean baseSuccessBean) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
/**
* 获取新闻详情

View File

@ -12,6 +12,8 @@ import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.bumptech.glide.Glide;
import com.google.android.material.tabs.TabLayout;
import com.sucstepsoft.cm_utils.constant.PathConfig;
import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager;
@ -59,6 +61,15 @@ public class NewsMainActivity extends BaseActivity {
mPId = getIntent().getStringExtra("pId");
refreshView(STATE_LOAD_LOADING);
mTvBaseTitle.setText(mTitle);
mLlImg.setVisibility(View.VISIBLE);
Glide.with(mActivity)
.load(R.drawable.ic_search_icon_white)
.into(mIvInto);
mIvInto.setOnClickListener(v -> ARouter.getInstance()
.build(PathConfig.PATH_MODULE_MAIN_NEWS_SEARCH)
.withString("id", mId)
.withBoolean("isTab", true)
.navigation());
getNewsTabs();
}

View File

@ -0,0 +1,316 @@
package com.tengshisoft.mudulemain.cultural.activitys.news;
import android.text.TextUtils;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.ImageView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.gyf.immersionbar.ImmersionBar;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.sucstepsoft.cm_utils.constant.PathConfig;
import com.sucstepsoft.cm_utils.core.retrofit_net.BaseUrlApi;
import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager;
import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity;
import com.sucstepsoft.cm_utils.core.widget.views.CustomStateView;
import com.sucstepsoft.cm_utils.core.widget.views.TypeFaceTextView;
import com.sucstepsoft.cm_utils.utils.toast.ToastUtils;
import com.tengshisoft.mudulemain.R;
import com.tengshisoft.mudulemain.R2;
import com.tengshisoft.mudulemain.cultural.adapter.NewsAdapter;
import com.tengshisoft.mudulemain.cultural.adapter.NewsTabAdapter;
import com.tengshisoft.mudulemain.cultural.beans.NewsItemBean;
import com.tengshisoft.mudulemain.cultural.beans.NewsTabBean;
import com.tengshisoft.mudulemain.cultural.net.HomeApi;
import com.tengshisoft.mudulemain.cultural.utils.ExceptionHandler;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
/**
* 搜索新闻
*/
@Route(path = PathConfig.PATH_MODULE_MAIN_NEWS_SEARCH)
public class NewsSearchActivity extends BaseActivity {
@BindView(R2.id.iv_search_back)
ImageView mIvSearchBack;
@BindView(R2.id.et_search_content)
EditText mEtSearchContent;
@BindView(R2.id.tv_search_btn)
TypeFaceTextView mTvSearchBtn;
@BindView(R2.id.srl_content)
SmartRefreshLayout mSrlContent;
@BindView(R2.id.rlv_content)
RecyclerView mRlvContent;
@BindView(R2.id.csv_state)
CustomStateView mCsvState;
@BindView(R2.id.rlv_tab)
RecyclerView mRlvTab;
private String mId;//新闻类型ID;
private String mKeywords = "";//搜索的关键字
private int mCurrentPage = 1;
private List<NewsItemBean.RowsBean> mDatas = new ArrayList<>();
private NewsAdapter mAdapter;
private boolean mIsTab;
private NewsTabAdapter mTabAdapter;
private List<NewsTabBean> mTabs = new ArrayList<>();
private int mSearchCount = 1;
private NewsTabBean mCurrentTab;
@Override
protected int setLayoutId() {
return R.layout.activity_news_search;
}
@Override
public void initData() {
ButterKnife.bind(this);
mRlTitleBar.setVisibility(View.GONE);
mRlTitleBar1.setVisibility(View.GONE);
ImmersionBar.with(this)
.transparentStatusBar()
.statusBarDarkFont(true)
.fullScreen(true)
.init();
refreshView(STATE_LOAD_SUCCESS);
mTvSearchBtn.setVisibility(View.GONE);
mId = getIntent().getStringExtra("id");
//是否有下级目录
mIsTab = getIntent().getBooleanExtra("isTab", false);
mIvSearchBack.setOnClickListener(v -> finish());
mCsvState.setState(CustomStateView.STATE_SEARCH);
mEtSearchContent.setOnEditorActionListener((v, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
mKeywords = mEtSearchContent.getText().toString().trim();
hideSoftKeyboard();
if (TextUtils.isEmpty(mKeywords)) {
ToastUtils.show("请输入要查询的内容");
} else {
doSaveKeywords();
if (mIsTab && mSearchCount == 1) {
mSearchCount = 2;
getNewsTab();
} else {
doRefreshList(1);
}
return true;
}
}
return false;
});
mAdapter = new NewsAdapter(mActivity, mDatas);
mRlvContent.setLayoutManager(new LinearLayoutManager(mActivity));
mRlvContent.setAdapter(mAdapter);
mAdapter.addOnItemClickByType(this::showNewsDetail);
mTabAdapter = new NewsTabAdapter(mActivity, mTabs);
mRlvTab.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.HORIZONTAL, false));
mRlvTab.setAdapter(mTabAdapter);
mTabAdapter.addOnItemClickListener(newsTabBean -> {
mCurrentTab = newsTabBean;
for (int i = 0; i < mTabs.size(); i++) {
NewsTabBean tabBean = mTabs.get(i);
if (tabBean.getDirectoriesName().equals(newsTabBean.getDirectoriesName())) {
tabBean.setCheck(true);
} else {
tabBean.setCheck(false);
}
}
mTabAdapter.setData(mTabs);
doSaveKeywords();
doRefreshList(1);
});
mSrlContent.setOnRefreshListener(refreshLayout -> doRefreshList(2));
mSrlContent.setOnLoadMoreListener(refreshLayout -> doLoadMore());
}
/**
* 显示新闻详情
*
* @param rowsBean
* @param type
*/
private void showNewsDetail(NewsItemBean.RowsBean rowsBean, int type) {
String url = "";
if ("6".equals(rowsBean.getNewsContentType())) {
ARouter.getInstance()
.build(PathConfig.PATH_MODULE_MAIN_NEWS_WEB)
.withString("title", rowsBean.getNewsContentTitle())
.withString("url", rowsBean.getNewsContentContent())
.navigation();
} else {
int newsType = 0;
if (type == 1) {
//1自定义列表
//3列表详情
if ("1".equals(rowsBean.getNewsConfigWebSwitch())) {
//列表
url = rowsBean.getTemplateRecordUrl();
newsType = 0;
} else {
//内容
url = rowsBean.getNewsConfigDescriptionText();
newsType = 1;
}
} else {
newsType = 0;
url = rowsBean.getTemplateRecordUrl();
}
ARouter.getInstance()
.build(PathConfig.PATH_MODULE_MAIN_NEWS_DETAIL) //TODO 连接
// .build(PathConfig.PATH_MODULE_MAIN_NEWS_DETAIL_INTERFACE)//TODO 接口方式
.withString("id", rowsBean.getNewsContentId())
.withString("url", url)
.withString("isComment", rowsBean.getNewsConfigComment())//是否可以评论
.withString("isCommentImg", rowsBean.getNewsConfigCommentImage())//评论是否可以上传图片
.withString("isCollect", rowsBean.getNewsContentCollectStatus())
.withString("photo",
BaseUrlApi.BASE_NEWS_IMG_URL + rowsBean.getNewsContentCoverList().get(0).getContentCoverId())
.withString("title", rowsBean.getNewsContentTitle())
.withInt("type", newsType)
.navigation();
}
}
/**
* 获取二级目录
*/
private void getNewsTab() {
RetrofitManager.getInstance()
.create(HomeApi.class)
.getNewsTabListByPid(mId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<List<NewsTabBean>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(List<NewsTabBean> newsTabBeans) {
if (newsTabBeans != null && newsTabBeans.size() > 0) {
NewsTabBean b = new NewsTabBean();
b.setDirectoriesName("全部");
b.setCheck(true);
mCurrentTab = b;
mTabs.add(b);
mTabs.addAll(newsTabBeans);
mTabAdapter.setData(mTabs);
doRefreshList(1);
}
}
@Override
public void onError(Throwable e) {
doRefreshList(1);
}
@Override
public void onComplete() {
}
});
}
/**
* 保存查询的关键字
*/
private void doSaveKeywords() {
String params = String.format(getResources().getString(R.string.big_data_str), "QUERY", mKeywords, "END");
bigDataRead(params);
}
/**
* 刷新列表
*/
private void doRefreshList(int i) {
mCurrentPage = 1;
mDatas.clear();
if (i == 1) {
mCsvState.setState(CustomStateView.STATE_LOAD);
}
mAdapter.setData(mDatas);
if (mIsTab) {
if ("全部".equals(mCurrentTab.getDirectoriesName())) {
getNewsList("", mId);
} else {
getNewsList(mCurrentTab.getNewsDirectoriesId(), "");
}
} else {
getNewsList("", mId);
}
}
/**
* 加载更多
*/
private void doLoadMore() {
++mCurrentPage;
if (mIsTab) {
if ("全部".equals(mCurrentTab.getDirectoriesName())) {
getNewsList("", mId);
} else {
getNewsList(mCurrentTab.getNewsDirectoriesId(), "");
}
} else {
getNewsList("", mId);
}
}
private void getNewsList(String id, String pId) {
RetrofitManager.getInstance()
.create(HomeApi.class)
.getNewsList(id, pId, mCurrentPage + "", "10", mKeywords)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<NewsItemBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(NewsItemBean newsItemBean) {
mDatas.addAll(newsItemBean.getRows());
mAdapter.setData(mDatas);
mSrlContent.finishRefresh();
mSrlContent.finishLoadMore();
if (newsItemBean.getRows().size() > 0) {
mCsvState.setState(CustomStateView.STATE_SUCCESS);
} else {
if (mCurrentPage == 1) {
mCsvState.setState(CustomStateView.STATE_EMPTY);
}
mSrlContent.setNoMoreData(true);
}
}
@Override
public void onError(Throwable e) {
ExceptionHandler.handleException(e);
mCsvState.setState(CustomStateView.STATE_ERROR);
mSrlContent.finishLoadMore();
mSrlContent.finishRefresh();
}
@Override
public void onComplete() {
}
});
}
}

View File

@ -1,28 +1,24 @@
package com.tengshisoft.mudulemain.cultural.adapter;
import android.content.Context;
import androidx.recyclerview.widget.RecyclerView;
import android.net.http.SslError;
import android.os.Build;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.SslErrorHandler;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.MultiTransformation;
import com.bumptech.glide.load.resource.bitmap.FitCenter;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import com.sucstepsoft.cm_utils.constant.PathConfig;
import com.sucstepsoft.cm_utils.core.retrofit_net.BaseUrlApi;
import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter;
import com.sucstepsoft.cm_utils.core.widget.base.GlideRoundTransform;
import com.sucstepsoft.cm_utils.core.widget.base.RoundedCornersTransform;
import com.sucstepsoft.cm_utils.utils.ConvertUtils;
import com.sucstepsoft.cm_utils.utils.LogUtils;
@ -54,6 +50,7 @@ public class NewsAdapter extends BaseRecyclerAdapter<NewsItemBean.RowsBean, Recy
roundedCornersTransform.setNeedCorner(true, true, true, true);
mPicOptions = new RequestOptions()
.transform(roundedCornersTransform)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.error(R.drawable.ic_img_default)
.placeholder(R.drawable.ic_img_default);

View File

@ -0,0 +1,51 @@
package com.tengshisoft.mudulemain.cultural.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter;
import com.tengshisoft.mudulemain.R;
import com.tengshisoft.mudulemain.cultural.beans.NewsTabBean;
import com.tengshisoft.mudulemain.cultural.holder.NewsTabHolder;
import java.util.List;
/**
* 作者: adam
* 日期: 2020/5/15 - 10:00 AM
* 邮箱: itgaojian@163.com
* 描述:
*/
public class NewsTabAdapter extends BaseRecyclerAdapter<NewsTabBean, NewsTabHolder> {
public NewsTabAdapter(Context ctx, List<NewsTabBean> list) {
super(ctx, list);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public NewsTabHolder createHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_tab, parent, false);
return new NewsTabHolder(itemView);
}
@Override
public void bindHolder(NewsTabHolder funcHolder, int i) {
NewsTabBean tab = mData.get(i);
if (tab.isCheck()) {
funcHolder.mVLine.setVisibility(View.VISIBLE);
} else {
funcHolder.mVLine.setVisibility(View.INVISIBLE);
}
funcHolder.mTvName.setText(tab.getDirectoriesName());
}
}

View File

@ -41,6 +41,16 @@ public class NewsTabBean {
private String directoriesTarget3;
private String directoriesView;
private String newsDirectoriesId;
private boolean isCheck;
public boolean isCheck() {
return isCheck;
}
public void setCheck(boolean check) {
isCheck = check;
}
@Override
public String toString() {

View File

@ -479,8 +479,8 @@ public class HomeFragment extends BaseFragment {
url = rowsBean.getTemplateRecordUrl();
}
ARouter.getInstance()
// .build(PathConfig.PATH_MODULE_MAIN_NEWS_DETAIL) //TODO 连接
.build(PathConfig.PATH_MODULE_MAIN_NEWS_DETAIL_INTERFACE)//TODO 接口方式
.build(PathConfig.PATH_MODULE_MAIN_NEWS_DETAIL) //TODO 连接
// .build(PathConfig.PATH_MODULE_MAIN_NEWS_DETAIL_INTERFACE)//TODO 接口方式
.withString("id", rowsBean.getNewsContentId())
.withString("url", url)
.withString("isComment", rowsBean.getNewsConfigComment())//是否可以评论

View File

@ -137,8 +137,8 @@ public class NewsFragment extends BaseFragment {
url = rowsBean.getTemplateRecordUrl();
}
ARouter.getInstance()
// .build(PathConfig.PATH_MODULE_MAIN_NEWS_DETAIL)
.build(PathConfig.PATH_MODULE_MAIN_NEWS_DETAIL_INTERFACE)
.build(PathConfig.PATH_MODULE_MAIN_NEWS_DETAIL)
// .build(PathConfig.PATH_MODULE_MAIN_NEWS_DETAIL_INTERFACE)
.withString("id", rowsBean.getNewsContentId())
.withString("url", url)
.withString("isComment", rowsBean.getNewsConfigComment())//是否可以评论

View File

@ -0,0 +1,26 @@
package com.tengshisoft.mudulemain.cultural.holder;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.sucstepsoft.cm_utils.core.widget.views.TypeFaceTextView;
import com.tengshisoft.mudulemain.R;
/**
* 作者: adam
* 日期: 2020/5/28 - 10:18 AM
* 邮箱: itgaojian@163.com
* 描述:
*/
public class NewsTabHolder extends RecyclerView.ViewHolder {
public View mVLine;
public TypeFaceTextView mTvName;
public NewsTabHolder(@NonNull View itemView) {
super(itemView);
mVLine = itemView.findViewById(R.id.v_line);
mTvName = itemView.findViewById(R.id.tv_name);
}
}

View File

@ -148,6 +148,18 @@ public interface HomeApi {
@Query("newsDirectoriesParentId") String pId,
@Query("page") String page);
/**
* 获取新闻列表-不需要token
*/
@Headers({"base_url_name:news", "Content-Type:application/json", "Accept:application/json", "need_area:true"})
@GET("app/newscontent/listpagenewscontentrelease")
Observable<NewsItemBean> getNewsList(@Query("newsDirectoriesId") String newsDirectoriesId,
@Query("newsDirectoriesParentId") String pId,
@Query("page") String page,
@Query("rows") String rows,
@Query("keywords") String keywords);
/**
* 获取新闻评论数量,多个新闻ID用下划线隔开(id_id_id)
*/
@ -188,22 +200,6 @@ public interface HomeApi {
@GET("app/newscontent/getnewscontentbyidrelease/{id}")
Observable<NewsDetailBean> getNewsDetail(@Path("id") String id);
/**
* 新闻访问量
* http://v3.xzszwhy.cn/module/
*/
@Headers({"base_url_name:bigdata", "Content-Type:application/json", "Accept:application/json"})
@GET("app/contentcensusrelease/log")
Observable<BaseSuccessBean> doSaveRead(@Query("requestUrl") String id);
/**
* 搜索热词
* ?requestUrl=安卓QUERY要搜索的内容END
*/
@Headers({"base_url_name:bigdata", "Content-Type:application/json", "Accept:application/json"})
@GET("app/contentcensusrelease/log")
Observable<BaseSuccessBean> bigDataKeywords(@Query("requestUrl") String id);
/**
* 获取评论列表
*/

View File

@ -0,0 +1,46 @@
<?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"
android:paddingTop="30dp"
tools:context=".cultural.activitys.news.NewsSearchActivity">
<include layout="@layout/layout_search" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rlv_tab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
tools:itemCount="3"
tools:layoutManager="LinearlayoutManager"
tools:listitem="@layout/item_tab"
tools:orientation="horizontal" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:padding="10dp">
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/srl_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rlv_content"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
<com.sucstepsoft.cm_utils.core.widget.views.CustomStateView
android:id="@+id/csv_state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
</RelativeLayout>
</LinearLayout>

View File

@ -0,0 +1,26 @@
<?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="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="vertical">
<com.sucstepsoft.cm_utils.core.widget.views.TypeFaceTextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:textSize="@dimen/text_14"
tools:text="全部" />
<View
android:id="@+id/v_line"
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="10dp"
android:layout_marginTop="2dp"
android:layout_marginRight="10dp"
android:background="@color/app_title_9f_no" />
</LinearLayout>

View File

@ -18,6 +18,7 @@ import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity;
import com.sucstepsoft.cm_utils.core.widget.base.BaseBannerImageAdapter;
import com.sucstepsoft.cm_utils.core.widget.views.TypeFaceTextView;
import com.sucstepsoft.cm_utils.utils.ConvertUtils;
import com.sucstepsoft.cm_utils.utils.LogUtils;
import com.sucstepsoft.cm_utils.utils.UserLgUtils;
import com.tengshisoft.moduleplace.R;
import com.tengshisoft.moduleplace.R2;
@ -93,6 +94,9 @@ public class PlaceDetailActivity extends BaseActivity {
getPlaceDetailData(mId);
mTvPlaceDetail.setOnClickListener(v -> showPlaceDetail());
mMrbLevel.setIsIndicator(true);
String read = String.format(getResources().getString(R.string.big_data_str), "", mId, "场馆");
LogUtils.e(read);
bigDataRead(read);
}
/**