【Android】RecycleView之“展开与收缩”功能示例

编程入门 行业动态 更新时间:2024-10-28 16:21:46

【Android】RecycleView之“展开与收缩”功能<a href=https://www.elefans.com/category/jswz/34/1770116.html style=示例"/>

【Android】RecycleView之“展开与收缩”功能示例

       本文参考网址:

       本文是参考上述网址后,在上一篇博客(Android开发入门--微信小程序框架搭建)的基础上,选择了其中一个tab添加了一个recycleview功能。下面展示recycleview功能中的“展开与收缩”功能的核心代码。

ExpandCollapseActivity.java

public class ExpandCollapseActivity extends AppCompatActivity {private static final String TAG = ExpandCollapseActivity.class.getSimpleName();private List<String> mList = new ArrayList<>();@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.expandcollapse_activity);initExpandCollapseData();initView();}private void initExpandCollapseData() {mList.add("Shake it off");mList.add("Blank Space");mList.add("Wanderland");mList.add("Clean");mList.add("Welcome to New York");mList.add("You are in love");mList.add("How you get the girl");mList.add("New Romantics");mList.add("Style");mList.add("Out of the wood");}private void initView() {ExpandCollapseAdapter adapter = new ExpandCollapseAdapter(this);RecyclerView rcvExpandCollapse = findViewById(R.id.rcv_expandcollapse);rcvExpandCollapse.setLayoutManager(new LinearLayoutManager(this));rcvExpandCollapse.setHasFixedSize(true);rcvExpandCollapse.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));rcvExpandCollapse.setAdapter(adapter);adapter.setExpandCollapseDataList(mList);}
}

ExpandCollapseAdapter.java

public class ExpandCollapseAdapter extends RecyclerView.Adapter<ExpandCollapseAdapter.ExpandCollapseViewHolder> {private static final String TAG = ExpandCollapseAdapter.class.getSimpleName();private Context mContext;private List<String> mList = new ArrayList<>();private int expandedPosition = -1;private ExpandCollapseViewHolder mViewHolder;public ExpandCollapseAdapter(Context context) {mContext = context;}public void setExpandCollapseDataList(List<String> list) {mList = list;notifyDataSetChanged();}@NonNull@Overridepublic ExpandCollapseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View view = LayoutInflater.from(mContext).inflate(R.layout.expandcollapse_recycle_item, parent, false);return new ExpandCollapseViewHolder(view);}@Overridepublic void onBindViewHolder(@NonNull final ExpandCollapseViewHolder holder, int position) {holder.tvTeam.setText(mList.get(position));holder.tvTeamChild.setText(mList.get(position) + " 所属专辑:1989");final boolean isExpanded = position == expandedPosition;holder.rlChild.setVisibility(isExpanded ? View.VISIBLE : View.GONE);holder.rlParent.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (mViewHolder != null) {mViewHolder.rlChild.setVisibility(View.GONE);notifyItemChanged(expandedPosition);}expandedPosition = isExpanded ? -1 : holder.getAdapterPosition();mViewHolder = isExpanded ? null : holder;notifyItemChanged(holder.getAdapterPosition());}});}@Overridepublic int getItemCount() {return mList == null ? 0 : mList.size();}public class ExpandCollapseViewHolder extends RecyclerView.ViewHolder {RelativeLayout rlParent, rlChild;TextView tvTeam, tvTeamChild;public ExpandCollapseViewHolder(View itemView) {super(itemView);rlParent = itemView.findViewById(R.id.rl_parent);rlChild = itemView.findViewById(R.id.rl_child);tvTeam = itemView.findViewById(R.id.tv_team);tvTeamChild = itemView.findViewById(R.id.tv_team_child);}}
}

效果图如下:

完整代码的gitee仓库地址:

更多推荐

【Android】RecycleView之“展开与收缩”功能示例

本文发布于:2024-03-07 15:01:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1718143.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:示例   功能   Android   RecycleView

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!