猜你喜欢功能完成

This commit is contained in:
18401019693
2022-08-06 14:58:25 +08:00
parent b0a1014cf3
commit fadf7c5655
16 changed files with 889 additions and 40 deletions

View File

@@ -1,5 +1,6 @@
package com.yunbao.main.adapter;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -22,6 +23,11 @@ public class SearchRecommendAdapter extends RecyclerView.Adapter {
private static final int HEAD = 0;
private static final int BODY = 1;
private List<SearchRecommendModel> recommendModels = new ArrayList<>();
private Activity activity;
public SearchRecommendAdapter(Activity activity) {
this.activity = activity;
}
@NonNull
@Override
@@ -32,7 +38,7 @@ public class SearchRecommendAdapter extends RecyclerView.Adapter {
return new SearchRecommendHeardViewHolder(herdView);
default:
View bodyView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_search_recommend_body, parent, false);
return new SearchRecommendBodyViewHolder(bodyView);
return new SearchRecommendBodyViewHolder(bodyView, activity);
}
}
@@ -42,7 +48,8 @@ public class SearchRecommendAdapter extends RecyclerView.Adapter {
SearchRecommendHeardViewHolder heardViewHolder = (SearchRecommendHeardViewHolder) holder;
heardViewHolder.setHistory(recommendModels.get(position).getHistoryRecordMap());
} else {
SearchRecommendBodyViewHolder bodyViewHolder = (SearchRecommendBodyViewHolder) holder;
bodyViewHolder.showData(recommendModels.get(position).getList());
}
}
@@ -53,11 +60,16 @@ public class SearchRecommendAdapter extends RecyclerView.Adapter {
@Override
public int getItemViewType(int position) {
if (position == (recommendModels.size() - 1)) {
return HEAD;
} else {
if (recommendModels.size() == 1 && recommendModels.get(position).getHistoryRecordMap().size() == 0){
return BODY;
}else {
if (position == (recommendModels.size() - 1) ) {
return HEAD;
} else {
return BODY;
}
}
}
/**

View File

@@ -0,0 +1,59 @@
package com.yunbao.main.adapter;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.bean.AnchorRecommendItemModel;
import com.yunbao.common.utils.DeviceUtils;
import com.yunbao.main.R;
import com.yunbao.main.views.SearchRecommendBodyItemViewHolder;
import java.util.ArrayList;
import java.util.List;
/**
* 猜你喜欢适配器
*/
public class SearchRecommendBodyAdapter extends RecyclerView.Adapter {
List<AnchorRecommendItemModel> itemModelList = new ArrayList<>();
private Activity activity;
public SearchRecommendBodyAdapter(Activity activity) {
this.activity = activity;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View herdView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_main_home_lives, parent, false);
return new SearchRecommendBodyItemViewHolder(herdView);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
int height = DeviceUtils.getScreenHeight(activity);
if (holder instanceof SearchRecommendBodyItemViewHolder) {
SearchRecommendBodyItemViewHolder bodyItemViewHolder = (SearchRecommendBodyItemViewHolder) holder;
bodyItemViewHolder.showData(itemModelList.get(position), height);
}
}
@Override
public int getItemCount() {
return itemModelList.size();
}
/**
* 设置数据源
*/
public void showData(List<AnchorRecommendItemModel> list) {
itemModelList.clear();
itemModelList.addAll(list);
notifyDataSetChanged();
}
}

View File

@@ -8,13 +8,21 @@ import android.view.ViewGroup;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.bean.AnchorRecommendModel;
import com.yunbao.common.bean.SearchRecommendModel;
import com.yunbao.common.dialog.LoadingDialog;
import com.yunbao.common.event.SearchRecommendEvent;
import com.yunbao.common.fragment.BaseFragment;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.main.MainNetManager;
import com.yunbao.common.manager.SearchHistoryRecordManager;
import com.yunbao.main.R;
import com.yunbao.main.adapter.SearchRecommendAdapter;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -40,27 +48,64 @@ public class SearchRecommendFragment extends BaseFragment {
protected void initViews(Bundle savedInstanceState, View contentView) {
searchRecommend = contentView.findViewById(R.id.search_recommend_list);
adapter = new SearchRecommendAdapter();
adapter = new SearchRecommendAdapter(getActivity());
searchRecommend.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, true));
searchRecommend.setAdapter(adapter);
}
@Override
protected void loadData() {
List<SearchRecommendModel> searchRecommendModels = new ArrayList<>();
SearchRecommendModel model = new SearchRecommendModel();
Map<String, String> historyRecordMap = new HashMap<>();
historyRecordMap.put("大米", "");
historyRecordMap.put("開門", "");
historyRecordMap.put("芝麻", "");
historyRecordMap.put("瓦達上來看沒看", "");
historyRecordMap.put("", "");
historyRecordMap.put("加兩顆蛋", "");
historyRecordMap.put("打算", "");
searchRecommendModels.add(model.setHistoryRecordMap(historyRecordMap));
adapter.addData(searchRecommendModels);
//展示网络请求弹窗
LoadingDialog fragment = new LoadingDialog();
fragment.show(getChildFragmentManager(), "LoadingDialog");
MainNetManager.get(getActivity())
.anchorRecommend("6", new HttpCallback<AnchorRecommendModel>() {
@Override
public void onSuccess(AnchorRecommendModel data) {
fragment.dismiss();
//组装搜索历史数据
List<SearchRecommendModel> searchRecommendModels = new ArrayList<>();
Map<String, String> historyRecordMap = SearchHistoryRecordManager.get(getActivity()).getHistoryRecordMap();
if (historyRecordMap.size() > 0) {
SearchRecommendModel model = new SearchRecommendModel();
searchRecommendModels.add(model.setHistoryRecordMap(historyRecordMap));
}
searchRecommendModels.add(0, new SearchRecommendModel().setList(data.getList()));
adapter.addData(searchRecommendModels);
}
@Override
public void onError(String error) {
fragment.dismiss();
}
});
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSearchRecommendEvent(SearchRecommendEvent event) {
//展示网络请求弹窗
LoadingDialog fragment = new LoadingDialog();
fragment.show(getChildFragmentManager(), "LoadingDialog");
MainNetManager.get(getActivity())
.anchorRecommend("6", new HttpCallback<AnchorRecommendModel>() {
@Override
public void onSuccess(AnchorRecommendModel data) {
fragment.dismiss();
//组装搜索历史数据
List<SearchRecommendModel> searchRecommendModels = new ArrayList<>();
searchRecommendModels.add(0, new SearchRecommendModel().setList(data.getList()));
adapter.addData(searchRecommendModels);
}
@Override
public void onError(String error) {
fragment.dismiss();
}
});
}
}

View File

@@ -0,0 +1,106 @@
package com.yunbao.main.views;
import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.squareup.picasso.Picasso;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.AnchorRecommendItemModel;
import com.yunbao.common.custom.RatioRoundImageView;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.utils.formatBigNum;
import com.yunbao.main.R;
import com.yunbao.main.utils.MainIconUtil;
public class SearchRecommendBodyItemViewHolder extends RecyclerView.ViewHolder {
private ImageView mCover, liveType, mLiveIco, mType, pkico, drPkIco, pkAvatar;
private RatioRoundImageView bgs;
private View views;
private TextView mLiveState, mTitle, mName, mNum;
public SearchRecommendBodyItemViewHolder(@NonNull View itemView) {
super(itemView);
//展示普通布局,隐藏周星榜布局
itemView.findViewById(R.id.live_info_view).setVisibility(View.VISIBLE);
itemView.findViewById(R.id.lt_week_list).setVisibility(View.GONE);
mCover = itemView.findViewById(R.id.cover);
bgs = itemView.findViewById(R.id.bgs);
liveType = itemView.findViewById(R.id.live_type);
views = itemView.findViewById(R.id.views);
mLiveIco = (ImageView) itemView.findViewById(R.id.tv_live_ico);
mLiveState = (TextView) itemView.findViewById(R.id.tv_live_state);
mType = (ImageView) itemView.findViewById(R.id.type);
mTitle = (TextView) itemView.findViewById(R.id.title);
mName = (TextView) itemView.findViewById(R.id.name);
mNum = (TextView) itemView.findViewById(R.id.num);
pkico = (ImageView) itemView.findViewById(R.id.pk_ico);
drPkIco = (ImageView) itemView.findViewById(R.id.dr_pk_ico);
pkAvatar = (ImageView) itemView.findViewById(R.id.pk_avatar);
}
public void showData(AnchorRecommendItemModel model, int height) {
Context mContext = itemView.getContext();
liveType.setImageDrawable(null);
if (model.getContentPicSizeTwo() != null && !model.getContentPicSizeTwo().equals("") && height <= 1920) {
Picasso.with(mContext)
.load(model.getContentPicSizeTwo())
.into(liveType);
} else if (model.getContentPicSizeThree() != null && !model.getContentPicSizeThree().equals("") && height > 1920) {
Picasso.with(mContext)
.load(model.getContentPicSizeThree())
.into(liveType);
}
ImgLoader.display(itemView.getContext(), model.getThumb(), mCover);
bgs.setVisibility(View.VISIBLE);
pkico.setVisibility(View.GONE);
pkAvatar.setVisibility(View.GONE);
drPkIco.setVisibility(View.GONE);
if (model.getDrpkStatus() != null && model.getDrpkStatus().equals("1")) {
drPkIco.setVisibility(View.VISIBLE);
}
if (model.getPkAvatarThumb() != null && !model.getPkAvatarThumb().equals("")) {
ImgLoader.display(mContext, model.getPkAvatarThumb(), pkAvatar);
pkico.setVisibility(View.VISIBLE);
pkAvatar.setVisibility(View.VISIBLE);
}
mName.setText(model.getUserNicename());
if (TextUtils.isEmpty(model.getTitle())) {
if (mTitle.getVisibility() == View.VISIBLE) {
mTitle.setVisibility(View.GONE);
}
} else {
if (mTitle.getVisibility() != View.VISIBLE) {
mTitle.setVisibility(View.VISIBLE);
}
mTitle.setText(model.getTitle());
}
mNum.setText(formatBigNum.formatBigNum(String.valueOf(model.getHotNum())));
views.setVisibility(View.GONE);
if (model.getIslive() == 1) {
views.setVisibility(View.VISIBLE);
//直播中
mType.setImageResource(MainIconUtil.getLiveTypeIcon(model.getType()));
mType.setVisibility(View.VISIBLE);
mLiveIco.setImageResource(R.mipmap.icon_main_rest_work);
mNum.setVisibility(View.VISIBLE);
liveType.setVisibility(View.VISIBLE);
mLiveState.setText(R.string.lives_state);
} else {
views.setVisibility(View.VISIBLE);
//休息中
mType.setImageResource(MainIconUtil.getLiveTypeIcon(Constants.LIVE_TYPE_RESTING));
mType.setVisibility(View.GONE);
mLiveIco.setImageResource(R.mipmap.icon_main_rest_spot);
mLiveState.setText(R.string.rest_state);
liveType.setVisibility(View.GONE);
mNum.setVisibility(View.GONE);
}
}
}

View File

@@ -1,15 +1,53 @@
package com.yunbao.main.views;
import android.app.Activity;
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.bean.AnchorRecommendItemModel;
import com.yunbao.common.event.SearchRecommendEvent;
import com.yunbao.common.utils.Bus;
import com.yunbao.main.R;
import com.yunbao.main.adapter.SearchRecommendBodyAdapter;
import java.util.List;
/**
* 搜索推荐页头部搜索历史信息
*/
public class SearchRecommendBodyViewHolder extends RecyclerView.ViewHolder {
public SearchRecommendBodyViewHolder(@NonNull View itemView) {
private RecyclerView liveList;
private SearchRecommendBodyAdapter adapter;
private ImageView changeBatch;
public SearchRecommendBodyViewHolder(@NonNull View itemView, Activity activity) {
super(itemView);
liveList = itemView.findViewById(R.id.live_list);
changeBatch = itemView.findViewById(R.id.change_batch);
liveList.setLayoutManager(new GridLayoutManager(itemView.getContext(), 2, GridLayoutManager.VERTICAL, false));
adapter = new SearchRecommendBodyAdapter(activity);
liveList.setAdapter(adapter);
changeBatch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bus.get().post(new SearchRecommendEvent());
}
});
}
/**
* 猜你喜欢数据
*
* @param list
*/
public void showData(List<AnchorRecommendItemModel> list) {
adapter.showData(list);
}
}

View File

@@ -7,5 +7,6 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/search_recommend_list"
android:layout_width="match_parent"
android:descendantFocusability="blocksDescendants"
android:layout_height="wrap_content" />
</LinearLayout>

View File

@@ -2,10 +2,35 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:orientation="vertical"
android:padding="11dp">
<FrameLayout
android:id="@+id/type_title"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/change_batch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|right"
android:background="@mipmap/icon_cange" />
<TextView
android:id="@+id/anchor_more"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:drawablePadding="5dp"
android:text="@string/you_may_also_like"
android:textColor="#FF000000"
android:textSize="16sp" />
</FrameLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/live_list"