当前位置: 代码迷 >> Android >> ArrayAdapter的getView执行有关问题
  详细解决方案

ArrayAdapter的getView执行有关问题

热度:92   发布时间:2016-05-01 14:14:39.0
ArrayAdapter的getView执行问题
试着写了写简单的代码,想看看getView是什么时候执行和怎么执行的
代码如下:
Java code
package com.test.activity;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.GridView;public class EasyTestActivity extends Activity {    /** Called when the activity is first created. */        @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                GridView gridView = (GridView)findViewById(R.id.GridView1);                CustomAdapter adapter = new CustomAdapter(this, android.R.layout.simple_expandable_list_item_1, new String[] {"1","2","3"});                gridView.setAdapter(adapter);    }        public class CustomAdapter extends ArrayAdapter<String> {        public CustomAdapter(Context context, int resource,                String[] objects) {            super(context, resource, objects);            // TODO Auto-generated constructor stub        }                @Override        public View getView(int position, View convertView, ViewGroup parent) {            if(convertView == null) {                convertView = super.getView(position, convertView, parent);                                //在这里输出是为第几条创建View和View的地址                Log.v(new String(),                       "View(" + String.valueOf(position) + ")" + " = " + convertView.toString());            }            return convertView;        }            }}


执行的时候,输出的结果是:
08-08 05:23:29.678: I/dalvikvm(2450): Wrote stack traces to '/data/anr/traces.txt'
08-08 05:23:29.939: V/(2450): View(0) = [email protected]
08-08 05:23:29.988: V/(2450): View(1) = [email protected]
08-08 05:23:29.988: V/(2450): View(2) = [email protected]
08-08 05:23:30.018: V/(2450): View(0) = [email protected]
08-08 05:23:30.038: D/gralloc_goldfish(2450): Emulator without GPU emulation detected.


这里我就不明白了,为什么会为第0条数据创建了两次view?这是第一个问题....

之后我修改了一下代码,记录下了给第0条创建的两个view,然后分别修改两个view的BackgroundColor,发现只有修改第一次创建的view的时候器作用,修改第二次创建的view时没有效果。那第二次创建的view去哪了?


------解决方案--------------------
确实多次调用的,这个可以不要管,系统就这样搞的,需要不断的刷新显示