传奇广告查询第一站 同步54.com

关于ListView 条目点击混乱的问题
原创 于2026-01-05 18:07:00发布
9 阅读
0
0


一个比较简单的方法就是给数据源的实体类里边加一个属性。代码:

Activity 里边

public class MainActivity extends Activity { ListView mListView;  Listlist;  @Override  protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  mListView = (ListView) findViewById(R.id.mListView);  list=new ArrayList<>();  for (int i=0;i<100;i++){//list添加100条数据 ItemDao dao = new ItemDao();  list.add(dao);  } MyAdapter adapter = new MyAdapter(this);  adapter.setList(list);//赋值给适配器  mListView.setAdapter(adapter);  } } 
实体类,只有一个属性

public class ItemDao { public boolean isClicked() { return isClicked;  } public void setIsClicked(boolean isClicked) { this.isClicked = isClicked;  } boolean isClicked; } 
适配器

public class MyAdapter extends BaseAdapter { public MyAdapter(Context context) { this.context = context;  } public void setList(List list) { this.list = list;  } List list;  Context context;   @Override  public int getCount() { return list.size();  } @Override  public Object getItem(int position) { return list.get(position);  } @Override  public long getItemId(int position) { return position;  } 
 @Override  //这个方法说一下,当listView滚过一屏幕时就会重新调用getView()方法  public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; // holder,在手机性能比较差的时候快了不是一点半点  if (convertView == null) { convertView = LayoutInflater.from(context).inflate(R.layout.list_item_view, null);  Button mButton = (Button) convertView.findViewById(R.id.mButton);  holder = new ViewHolder();  holder.button = mButton;  convertView.setTag(holder);  } else { holder = (ViewHolder) convertView.getTag();  } //这个地方很关键,不能在onClick里边写,重新调用getView的话,实例化一遍view,不走onclikeonclike设置的属性无效  // 通过isCliked属性判断  if (list.get(position).isClicked) { if (position < 10) { holder.button.setText("position :" + "0" + position + " 已赞");  } else { holder.button.setText("position :" + position + " 已赞");  } holder.button.setBackgroundColor(context.getResources().getColor(R.color.clicked));  } else { if (position < 10) { holder.button.setText("position :" + "0" + position + " 点赞");  } else { holder.button.setText("position :" + position + " 点赞");  } holder.button.setBackgroundColor(context.getResources().getColor(R.color.unClicked));  } holder.button.setOnClickListener(new MyListener(position));  return convertView;  } class ViewHolder { Button button;  } class MyListener implements View.OnClickListener { public MyListener(int i) { this.i = i;  } int i;   @Override  public void onClick(View v) { if (list.get(i).isClicked) { list.get(i).setIsClicked(false);  } else { list.get(i).setIsClicked(true);  } notifyDataSetChanged();//刷新适配器,重新调用getview,不然点击不能改变view  } } }
管理员
0
0
0
分享
上一篇: 传世调试之-如何自定义脚本函数
下一篇: 传奇服务器列表文档,转来的 ,给新手看看 ,绝对实用、传奇服务端的构成及各个文件的作用...
评论
历史记录
回顶部
浏览时间 游戏名称 游戏IP 开区网址
注册GM1论坛账号
  • 上传头像
注册

已有账号,

微信扫码登录
重置密码
重置密码

注册

绑定关联手机号
关联手机号