1.为什么要重写Adapter 的getView方法
为什么要重写getView方法 可以看这里 android listView滚动时checkBox的状态不会保存的问题
2.在哪个地方会有性能问题
拿出 android listView滚动时checkBox的状态不会保存的问题 这里的getView方法里的代码看下就会明白了
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater mInflater = LayoutInflater.from(context);
//每次调用 都实例化layout 效率非常低 ,而且每次在下面都创建了好几个View
convertView = mInflater.inflate(R.layout.user_list, null);
ImageView imgUserImg = (ImageView) convertView.findViewById(R.id.imgUserImg);
imgUserImg.setBackgroundResource((Integer) listData.get(position).get("imgUserImg"));
TextView tvUserName = (TextView) convertView.findViewById(R.id.tvUserName);
tvUserName.setText((String)listData.get(position).get("tvUserName"));
Log.d("getView", (String)listData.get(position).get("tvUserName"));
TextView tvUserMoney = (TextView) convertView.findViewById(R.id.tvUserMoney);
tvUserMoney.setText(String.valueOf(listData.get(position).get("tvUserMoney")));
CheckBox check = (CheckBox) convertView.findViewById(R.id.ckUser);
。。。。。。
以上代码你会发现:每次加载item的时候,都要加载一下布局文件,然后生成一个新的convertView View对象,然后通过View找到对应的ImageView和TextView,正如我们所知道的那样,加载布局文件时很耗时的,特别是在操作比较频繁 情况下,这是不可忍受的,所以会导致ANR现象。