为了账号安全,请及时绑定邮箱和手机立即绑定

关于adapter的getView的优化疑问。

这样优化getView(),如果item数量超过一屏,滑动到第二屏点击事件和textiew的text都会有问题。

正在回答

2 回答

很好,将监听器缓存起来也是一种优化方法

0 回复 有任何疑惑可以回复我~
@Override
   public View getView(final int position, View convertView, ViewGroup parent) {
       ViewHolder holder = null;
       if (convertView == null) {
           convertView = LayoutInflater.from((parent.getContext())).inflate(R.layout.item_app, parent, false);
           holder = new ViewHolder();
           holder.btnDownload = (Button) convertView.findViewById(R.id.btnDownload);
           holder.tvName = (TextView) convertView.findViewById(R.id.tvName);
           holder.onClickListener = new MyOnClickListener();
           convertView.setTag(holder);
       } else {
           holder = (ViewHolder) convertView.getTag();
       }
       holder.onClickListener.setPosition(position, holder);
       holder.tvName.setText(position+" App");
       holder.btnDownload.setOnClickListener(holder.onClickListener);
       return convertView;
   }

   static class ViewHolder {
       Button btnDownload;
       TextView tvName;
       MyOnClickListener onClickListener;
   }

   private static class MyOnClickListener implements View.OnClickListener {
       private int mPosition;
       private ViewHolder mHolder;

       public void setPosition(int position, ViewHolder holder) {
           this.mPosition = position;
           this.mHolder = holder;
       }

       @Override
       public void onClick(View v) {
           Toast.makeText(v.getContext(), mHolder.tvName.getText(), Toast.LENGTH_SHORT).show();
       }
   }

}

建议对于OnClickListener的重复创建优化可以像如上处理。

2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android-Service系列之多线程断点续传下载
  • 参与学习       21816    人
  • 解答问题       54    个

本视频教程主要代领我们要学习的多线程续传下载程序的开发

进入课程

关于adapter的getView的优化疑问。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信