示例"/>
【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之“展开与收缩”功能示例
发布评论