代码如下: 主要的参数是
mPosition
public class SubjectListAdapter extends RecyclerView.Adapter<SubjectListAdapter.MyViewHolder> {
private List<String> dataList;
private Context context;
private List<Boolean> isClicks = new ArrayList<>();
private int mPosition = 0;
public SubjectListAdapter(Context context, List<String> dataList){
this.context = context;
this.dataList = dataList;
@NonNull
@Override
public SubjectListAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.subject_item, parent, false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
final String subjectString = dataList.get(position);
holder.tv_subject_name.setText(subjectString);
if (mPosition != position) {
holder.tv_subject_name.setTextSize(12);
holder.tv_subject_name.getPaint().setFakeBoldText(false);
holder.rl_subject.setBackgroundResource(R.drawable.main_background);
}else if (mPosition == position) {
holder.tv_subject_name.setTextSize(14);
holder.tv_subject_name.getPaint().setFakeBoldText(true);
holder.rl_subject.setBackgroundResource(R.drawable.bag_subject_item_selected);
holder.rl_subject.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mPosition = position;
notifyDataSetChanged();
});
@Override
public int getItemCount() {
return dataList.size();
class MyViewHolder extends RecyclerView.ViewHolder{
TextView tv_subject_name;
LinearLayout rl_subject;
public MyViewHolder(View view) {
super(view);
tv_subject_name = view.findViewById(R.id.tv_subject_name);
rl_subject = view.findViewById(R.id.rl_subject);
问题描述:RecycleView 中默认选择第一个 item,点击第 2 个 item 时改变其字体样式,其余的 item 的字体样式恢复默认代码如下: 主要的参数是 mPositionpublic class SubjectListAdapter extends RecyclerView.Adapter<SubjectListAdapter.MyViewHolder> { private List<String> dataList; p
// 传入点击的位置
public void setThisPosition(int thisPosition) {
this.thisPosition = thisPosition;
notifyDataSetChanged();
@NonN
RecyclerView 关于Item选中,取消选中的完美实现
很多时候要用到RecycelerView做数据的显示处理,点击选中及再次点击取消选中的操作,也看了一些其他博主写的相关博客,但总感觉8太行,要么过于冗余,要么描述不清,这需求比较简单,所以逻辑也应简洁明了。正好这些天工作上有相关的需求,所以记录一下我的实现过程。
老规矩先看效果:
(1)先新建一个TestAdapter.java,ViewHolder就定义了一个简单的TextView。然后就是 onCreateViewHolder(
项目中发现在在切换fragment(Fragment中带有RecyclerView)时,recyclerView的焦点总是默认在第一个item上,并且带有选中状态,事实上我并没有设置item的选中状态。多次测试发现,只在Android8.0(MIUI不会出现)以上才会出现这样的问题。
查看官方文档,发现如下内容:
现在,如果您没有为View对象(前景或背景图片)定义任何焦点状态颜色,框架会为Vi...
在写RecyclerVIew的适配器时,我们都要重写一个方法onBindViewHolder,这个方法在何时会执行呢?只要有一个item进入了手机界面(只要有item进入了手机界面,那么就会被加载),那么这个方法就会执行,对于的position就是这个item的下标。
比如现在有界面中14个测试item
我们在onBindViewHolder方法中通过Log.d输出以下内容
Log.d("onBindViewHolder","item"+position);
可以看到确实输出了14个item.
最近在开发安卓TV项目,列表调用notifyDataSetChanged()方法刷新数据时,焦点自动就变成第一个子item去了,查了半天发现用notifyItemRangeChanged(0,list.size());用这个方法去刷新数据,焦点就不会乱跳了,但是出现了界面闪一下的情况,使用以下方法解决界面刷新数据时闪动的BUG
recyclerview.setHasFixedSize(true);
((SimpleItemAnimator)(recyclerview.getItemAnimator())).
//进入成员列表默认首选项,ptt按键可以直接单呼选中成员形成单呼群组 start
if (position ==0 ){
rl_item.setEnabled(true);
rl_item.setFocusableInTouchMode(true);
rl_item.requestFocus();
rl_item.requestFocusFromTouch();
setLastFoucePosition(position);
EventBus.getDefault().post(new Event
// 在ViewHolder中为itemView设置点击事件监听器
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public MyViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
@Override
public void onClick(View view) {
// 获取点击的item位置
int position = getAdapterPosition();
// 创建PopupWindow对象
PopupWindow popupWindow = new PopupWindow(context);
// 设置PopupWindow的宽度和高度
popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
// 设置PopupWindow的内容视图
View popupView = LayoutInflater.from(context).inflate(R.layout.popup_layout, null);
popupWindow.setContentView(popupView);
// 显示PopupWindow
popupWindow.showAsDropDown(view);
上面的代码中,我们为RecyclerView的每一个item的视图View设置了一个点击事件监听器,当用户点击某个item时,会通过getAdapterPosition()方法获取当前点击的item位置。然后我们创建了一个PopupWindow对象,并设置它的宽度、高度和内容视图。最后调用showAsDropDown()方法将PopupWindow显示在当前点击的item的下方。当然,这只是一个简单的示例,你可以根据实际需求来自定义你的PopupWindow。
【报错】ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds t
95995
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request p
27049
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request p
Win10系统版本号太低,而无法安装像AI和PS这样的软件怎么办?
weixin_47647424:
Android --- Gradle是什么?
宇宙的最后一粒尘埃:
模拟一:STEMA 考试选择题模拟练习试卷(初级组)及答案 + 自我解题笔记
梁同学与Android:
模拟一:STEMA 考试选择题模拟练习试卷(初级组)及答案 + 自我解题笔记
2301_77465727: