手机能用的网站,网站建设框架文案,佛山网站建设找方维网络,做外贸用什么服务网站一、实现效果
单选、可取消选中、列表数据可更新#xff08;选择状态清空#xff0c;可重新选择#xff09; RecyclerView列表单选 二、实现步骤
仅展示部分核心代码#xff0c;请主要参考适配器的定义
1、Item布局
selected_tip_list_item.xml文件 包含一个TextView和…一、实现效果
单选、可取消选中、列表数据可更新选择状态清空可重新选择 RecyclerView列表单选 二、实现步骤
仅展示部分核心代码请主要参考适配器的定义
1、Item布局
selected_tip_list_item.xml文件 包含一个TextView和一个右侧选中的图片ImageView√
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationverticalxmlns:apphttp://schemas.android.com/apk/res-autoLinearLayoutandroid:layout_widthmatch_parentandroid:layout_height42dpandroid:orientationhorizontalandroid:gravitycenter_verticalandroid:paddingStart8dpandroid:paddingEnd8dpandroid:paddingTop6dpandroid:paddingBottom6dpTextViewandroid:idid/tv_tip_nameandroid:layout_widthwrap_contentandroid:layout_heightmatch_parentandroid:text账号1android:textColorcolor/color_333333android:textSizedimen/sp_17android:gravitycenter_vertical/Viewandroid:layout_width0dpandroid:layout_heightmatch_parentandroid:layout_weight1/ImageViewandroid:idid/img_selected_iconandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:visibilitygoneandroid:srcmipmap/selected_tip_icon//LinearLayout/LinearLayout2、Activity布局
SmartRefreshLayout搭配RecyclerView的使用可参考另一篇文章Android中SmartRefreshLayoutRecyclerView实现下拉刷新和上拉加载分页显示网络请求数据
com.scwang.smartrefresh.layout.SmartRefreshLayoutandroid:idid/refresh_view_tip_listandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroidx.recyclerview.widget.RecyclerViewandroid:idid/recycler_view_select_tipandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:layout_marginTop5dpandroid:layout_marginBottom10dp/
/com.scwang.smartrefresh.layout.SmartRefreshLayout3、RecyclerView的适配器
activity内部自定义适配器TipListAdapter
class TipListAdapter extends RecyclerView.AdapterMyTipViewHolder{private boolean isClick false;private int mPosition -1; //当前已选中位置public int getmPosition() {return mPosition;}public boolean isClick() {return isClick;}public void setmPosition(int mPosition,boolean isClick) {this.mPosition mPosition;this.isClick isClick;}NonNullOverridepublic MyTipViewHolder onCreateViewHolder(NonNull ViewGroup parent, int viewType) {View v View.inflate(AddTipActivity.this,R.layout.select_tip_list_item, null);MyTipViewHolder holder new MyTipViewHolder(v);holder.itemView.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {//将点击选中的Item信息赋值给上方的输入框mEditTipName.setText(holder.mTvTipName.getText().toString());if (!isClick){setmPosition(holder.getBindingAdapterPosition(),true);}else{setmPosition(holder.getBindingAdapterPosition(),getmPosition() ! holder.getBindingAdapterPosition());}notifyDataSetChanged();}});return holder;}Overridepublic void onBindViewHolder(NonNull MyTipViewHolder holder, int position) {String info mTipBeanList.get(position);holder.mTvTipName.setText(info);if (getmPosition() position isClick) {//选中某行holder.itemView.setBackground(getDrawable(R.drawable.finished_product_selected_button_background2));holder.mTvTipName.setTextColor(ContextCompat.getColor(AddTipActivity.this,R.color.color_D32124));holder.mImgSelectedIcon.setVisibility(View.VISIBLE);}else if (getmPosition() position !isClick){//取消已选中行mEditTipName.setText();holder.itemView.setBackground(getDrawable(R.drawable.unselected_tip_background));holder.mImgSelectedIcon.setVisibility(View.GONE);holder.mTvTipName.setTextColor(ContextCompat.getColor(AddTipActivity.this,R.color.color_333333));}else {holder.itemView.setBackground(getDrawable(R.drawable.unselected_tip_background));holder.mImgSelectedIcon.setVisibility(View.GONE);holder.mTvTipName.setTextColor(ContextCompat.getColor(AddTipActivity.this,R.color.color_333333));}}Overridepublic int getItemCount() {return mTipBeanList.size();}//列表更新时调用的方法public void refreshData(ListString data) {mTipBeanList.clear();mTipBeanList.addAll(data);//列表数据刷新时所有Item均恢复未选中状态setmPosition(-1,false);notifyDataSetChanged();}}class MyTipViewHolder extends RecyclerView.ViewHolder{TextView mTvTipName;ImageView mImgSelectedIcon; MyTipViewHolder(View itemView) {super(itemView);mTvTipName itemView.findViewById(R.id.tv_tip_name);mImgSelectedIcon itemView.findViewById(R.id.img_selected_icon);}}3、Activity内调用示例
1绑定控件
InjectView(id R.id.refresh_view_tip_list)
private SmartRefreshLayout mRefreshLayout;InjectView(id R.id.recycler_view_select_tip)
private RecyclerView mRecyclerViewAllTips;2初始化列表和适配器
adapter new TipListAdapter();
mRecyclerViewAllTips.setAdapter(adapter);
LinearLayoutManager linearLayoutManager new LinearLayoutManager(this);
mRecyclerViewAllTips.setLayoutManager(linearLayoutManager);
mRecyclerViewAllTips.setItemAnimator(new DefaultItemAnimator());
//设置下拉刷新和上拉加载样式
mRefreshLayout.setRefreshHeader(new ClassicsHeader(this));
mRefreshLayout.setOnMultiPurposeListener(new SimpleMultiPurposeListener(){//下拉刷新Overridepublic void onRefresh(NonNull RefreshLayout refreshLayout) {super.onRefresh(refreshLayout);//这里去调用请求数据的方法并更新adaptermRecyclerViewAllTips.smoothScrollToPosition(0);mRefreshLayout.finishRefresh(1000);}});
//首次进入页面自动刷新
mRefreshLayout.autoRefresh();3数据请求后更新adapter
更新列表调用方法如下 mList为请求到的数据
adapter.refreshData(mList);三、完成Nice