日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RecyclerView吸顶效果

發(fā)布時間:2023/12/16 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RecyclerView吸顶效果 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.導(dǎo)入依賴
androidTestCompile(‘com.android.support.test.espresso:espresso-core:2.2.2’, {
exclude group: ‘com.android.support’, module: ‘support-annotations’
})
2.adapter適配器
public class StickyExampleAdapter extends RecyclerView.Adapter<StickyExampleAdapter.RecyclerViewHolder> {
//第一個吸頂
private static final int FIRST_STICKY_VIEW = 1;
//別的吸頂
public static final int HAS_STICKY_VIEW = 2;
//正常View
public static final int NONE_STICKY_VIEW = 3;
private final LayoutInflater mInflate;
private final List datas;

public StickyExampleAdapter(Context context, List<NewsBean> datas) {mInflate = LayoutInflater.from(context);this.datas = datas; }@Override public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View inflate = mInflate.inflate(R.layout.item_ui, parent, false);return new RecyclerViewHolder(inflate); }@Override public void onBindViewHolder(RecyclerViewHolder holder, int position) {NewsBean stickyBean = datas.get(position);holder.tvName.setText(stickyBean.name);holder.tvGender.setText(stickyBean.autor);if (position == 0) {holder.tvStickyHeader.setVisibility(View.VISIBLE);holder.tvStickyHeader.setText(stickyBean.sticky);holder.itemView.setTag(FIRST_STICKY_VIEW);} else {if (!TextUtils.equals(stickyBean.sticky, datas.get(position - 1).sticky)) {holder.tvStickyHeader.setVisibility(View.VISIBLE);holder.tvStickyHeader.setText(stickyBean.sticky);holder.itemView.setTag(HAS_STICKY_VIEW);} else {holder.tvStickyHeader.setVisibility(View.GONE);holder.itemView.setTag(NONE_STICKY_VIEW);}}//通過此處設(shè)置ContentDescription,作為內(nèi)容描述,可以通過getContentDescription取出,功效跟setTag差不多。holder.itemView.setContentDescription(stickyBean.sticky); }@Override public int getItemCount() {return datas == null ? 0 : datas.size(); }public class RecyclerViewHolder extends RecyclerView.ViewHolder {TextView tvStickyHeader;RelativeLayout rlContentWrapper;TextView tvName;TextView tvGender;ImageView imgs;RecyclerViewHolder(View itemView) {super(itemView);tvStickyHeader = (TextView) itemView.findViewById(R.id.tv_sticky_header_view);rlContentWrapper = (RelativeLayout) itemView.findViewById(R.id.rl_content_wrapper);tvName = (TextView) itemView.findViewById(R.id.name);tvGender = (TextView) itemView.findViewById(R.id.auto);imgs = itemView.findViewById(R.id.imags);} }

}

3.MainActivity
public class MainActivity extends AppCompatActivity implements IView {

@BindView(R.id.recy) RecyclerView recy; @BindView(R.id.tv_sticky_header_view) TextView tvStickyHeaderView;//吸頂文本1 private PresenterImpls presenterImpls;@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);presenterImpls = new PresenterImpls(this);Map<String, Object> map = new HashMap<>();map.put("uid", "71");presenterImpls.startRequest(Contacts.DATA_URL, map, MyData.class);initListener();}//初始化Listener private void initListener() {recy.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, int dy) {super.onScrolled(recyclerView, dx, dy);View stickview = recyclerView.findChildViewUnder(0, 0);if (stickview != null && stickview.getContentDescription() != null) {if (!TextUtils.equals(tvStickyHeaderView.getText(), stickview.getContentDescription())) {tvStickyHeaderView.setText(stickview.getContentDescription());}}View transInfoView = recyclerView.findChildViewUnder(0, tvStickyHeaderView.getHeight() + 1);if (transInfoView.getTag() != null) {int transViewStatus = (int) transInfoView.getTag();int top = transInfoView.getTop();if (transViewStatus == StickyExampleAdapter.HAS_STICKY_VIEW) {if (top > 0) {int dealtY = top - tvStickyHeaderView.getMeasuredHeight();tvStickyHeaderView.setTranslationY(dealtY);} else {tvStickyHeaderView.setTranslationY(0);}} else if (transViewStatus == StickyExampleAdapter.NONE_STICKY_VIEW) {tvStickyHeaderView.setTranslationY(0);}}}}); }public void getData(List<MyData.DataBean> newsData) {List<NewsBean> stickyExampleModels = new ArrayList<>();for (int i = 0; i < newsData.size(); i++) {for (int j = 0; j <newsData.get(i).getSpus().size() ; j++) {if (i < newsData.get(i).getSpus().size()) {stickyExampleModels.add(new NewsBean(newsData.get(i).getName(), "--" + newsData.get(i).getSpus().get(j).getName(), "價格" + newsData.get(i).getSpus().get(j).getPraise_num()));}}}recy.setLayoutManager(new LinearLayoutManager(this));recy.setAdapter(new StickyExampleAdapter(this, stickyExampleModels)); }@Override public void success(Object success) {MyData news = (MyData) success;List<MyData.DataBean> newsData = news.getData();getData(newsData); }@Override public void error(Object error) {}

}
4.標(biāo)記bean類
public class NewsBean {
public String name;
public String autor;
public String sticky;

public NewsBean(String sticky, String name, String autor) {this.sticky = sticky;this.name = name;this.autor = autor; }

}

總結(jié)

以上是生活随笔為你收集整理的RecyclerView吸顶效果的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。