getView的代码如下:
public View getView(int position, View convertView, ViewGroup parent) {
Log.i(TAG, "getView -- " + position + " -- " + convertView);
ViewHolder holder = null;
if(convertView == null){
convertView = mInflater.inflate(R.layout.list_item, null);
holder = new ViewHolder();
holder.ivPic = (ImageView) convertView.findViewById(R.id.iv_pic);
holder.tvTitle = (TextView) convertView.findViewById(R.id.tv_title);
holder.cbSelect = (CheckBox) convertView.findViewById(R.id.cb_selected);
holder.btOk = (Button) convertView.findViewById(R.id.btn_ok);
convertView.setTag(holder);
} else{
holder = (ViewHolder) convertView.getTag();
}
convertView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// viewHolder.cbSelect.toggle();
Log.i(TAG, "click the convertView at ");
}
});
holder.btOk.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Log.i(TAG, "click the button");
}
});
holder.ivPic.setBackgroundResource(list.get(position).getPicId());
holder.tvTitle.setText(list.get(position).getTitle());
return convertView;
}我用的是模拟器,一屏显示了10个Item。
但是在logcat中查看日志,0--9 的视图getView方法被调用了三遍,listView加载完成后我不进行任何滑动
日志内容如下:
AndroidRuntime(577): NOTE: attach of thread 'Binder Thread #3' failed
getView -- 0 -- null
getView -- 1 -- android.widget.LinearLayout@40524048
getView -- 2 -- android.widget.LinearLayout@40524048
getView -- 3 -- android.widget.LinearLayout@40524048
getView -- 4 -- android.widget.LinearLayout@40524048
getView -- 5 -- android.widget.LinearLayout@40524048
getView -- 6 -- android.widget.LinearLayout@40524048
getView -- 7 -- android.widget.LinearLayout@40524048
getView -- 8 -- android.widget.LinearLayout@40524048
getView -- 9 -- android.widget.LinearLayout@40524048
getView -- 0 -- android.widget.LinearLayout@40524048
getView -- 1 -- null
getView -- 2 -- null
getView -- 3 -- null
getView -- 4 -- null
getView -- 5 -- null
getView -- 6 -- null
getView -- 7 -- null
getView -- 8 -- null
getView -- 9 -- null
getView -- 0 -- null
getView -- 1 -- android.widget.LinearLayout@4054b938
getView -- 2 -- android.widget.LinearLayout@4054b938
getView -- 3 -- android.widget.LinearLayout@4054b938
getView -- 4 -- android.widget.LinearLayout@4054b938
getView -- 5 -- android.widget.LinearLayout@4054b938
getView -- 6 -- android.widget.LinearLayout@4054b938
getView -- 7 -- android.widget.LinearLayout@4054b938
getView -- 8 -- android.widget.LinearLayout@4054b938
getView -- 9 -- android.widget.LinearLayout@4054b938
Displayed com.lxy/.AppMainActivity: +1s282ms应该只加载1--9一次,并且convertView是null才对吧,我没有滑动过。这是为什么呢?
public View getView(int position, View convertView, ViewGroup parent) {
Log.i(TAG, "getView -- " + position + " -- " + convertView);
ViewHolder holder = null;
if(convertView == null){
convertView = mInflater.inflate(R.layout.list_item, null);
holder = new ViewHolder();
holder.ivPic = (ImageView) convertView.findViewById(R.id.iv_pic);
holder.tvTitle = (TextView) convertView.findViewById(R.id.tv_title);
holder.cbSelect = (CheckBox) convertView.findViewById(R.id.cb_selected);
holder.btOk = (Button) convertView.findViewById(R.id.btn_ok);
convertView.setTag(holder);
} else{
holder = (ViewHolder) convertView.getTag();
}
convertView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// viewHolder.cbSelect.toggle();
Log.i(TAG, "click the convertView at ");
}
});
holder.btOk.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Log.i(TAG, "click the button");
}
});
holder.ivPic.setBackgroundResource(list.get(position).getPicId());
holder.tvTitle.setText(list.get(position).getTitle());
return convertView;
}我用的是模拟器,一屏显示了10个Item。
但是在logcat中查看日志,0--9 的视图getView方法被调用了三遍,listView加载完成后我不进行任何滑动
日志内容如下:
AndroidRuntime(577): NOTE: attach of thread 'Binder Thread #3' failed
getView -- 0 -- null
getView -- 1 -- android.widget.LinearLayout@40524048
getView -- 2 -- android.widget.LinearLayout@40524048
getView -- 3 -- android.widget.LinearLayout@40524048
getView -- 4 -- android.widget.LinearLayout@40524048
getView -- 5 -- android.widget.LinearLayout@40524048
getView -- 6 -- android.widget.LinearLayout@40524048
getView -- 7 -- android.widget.LinearLayout@40524048
getView -- 8 -- android.widget.LinearLayout@40524048
getView -- 9 -- android.widget.LinearLayout@40524048
getView -- 0 -- android.widget.LinearLayout@40524048
getView -- 1 -- null
getView -- 2 -- null
getView -- 3 -- null
getView -- 4 -- null
getView -- 5 -- null
getView -- 6 -- null
getView -- 7 -- null
getView -- 8 -- null
getView -- 9 -- null
getView -- 0 -- null
getView -- 1 -- android.widget.LinearLayout@4054b938
getView -- 2 -- android.widget.LinearLayout@4054b938
getView -- 3 -- android.widget.LinearLayout@4054b938
getView -- 4 -- android.widget.LinearLayout@4054b938
getView -- 5 -- android.widget.LinearLayout@4054b938
getView -- 6 -- android.widget.LinearLayout@4054b938
getView -- 7 -- android.widget.LinearLayout@4054b938
getView -- 8 -- android.widget.LinearLayout@4054b938
getView -- 9 -- android.widget.LinearLayout@4054b938
Displayed com.lxy/.AppMainActivity: +1s282ms应该只加载1--9一次,并且convertView是null才对吧,我没有滑动过。这是为什么呢?
解决方案 »
- android检测wifi和3g状态失败,下面是代码,求大神帮忙看下!
- 请问SMSC number是什么?作用是什么?(SMSC 短信服务中心 short message service center)最好具体点,本人刚接触通信
- 如何捕获home键的单击事件
- 如何用安卓自带的传感器计算移动距离,大侠们,帮帮忙吧
- 统计下 ,有多少人靠android市场挣钱了啊
- 关于android蓝牙开发,求指点
- 编译android 4.1 otapackage arch/arm/boot/ Error 2 错误
- 求一个Android调用.net写的webservice的例子
- 菜鸟问题 service里面的class继承ContentObserver可以吗?
- 关于对写的代码添加新功能的问题
- Android EditView高度问题
- Android 2.2 上没有问题。可是移到4.0就有问题了。
getView -- 0 -- null
getView -- 1 -- null
getView -- 2 -- null
getView -- 3 -- null
getView -- 4 -- null
getView -- 5 -- null
getView -- 6 -- null
getView -- 7 -- null
getView -- 8 -- null
getView -- 9 -- null
getView -- 0 -- android.widget.LinearLayout@4054b938
getView -- 1 -- android.widget.LinearLayout@4054b938
getView -- 2 -- android.widget.LinearLayout@4054b938
getView -- 3 -- android.widget.LinearLayout@4054b938
getView -- 4 -- android.widget.LinearLayout@4054b938
getView -- 5 -- android.widget.LinearLayout@4054b938
getView -- 6 -- android.widget.LinearLayout@4054b938
getView -- 7 -- android.widget.LinearLayout@4054b938
getView -- 8 -- android.widget.LinearLayout@4054b938
getView -- 9 -- android.widget.LinearLayout@4054b938这是第一次不滑动应该这么显示,如果你的LISTVIEW可以显示下10条记录的话应该是这样的。
MyBaseAdapter.java
public class MyAdapter extends BaseAdapter{ private final static String TAG = "MyAdapter";
private Context mContext;
private ArrayList<String> list;
private LayoutInflater mInflater;
public MyAdapter(Context context, ArrayList<String> list){
mContext = context;
this.list = list;
mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@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
public View getView(int position, View convertView, ViewGroup parent) {
Log.i(TAG, "getView -- " + position + " -- " + convertView);
ViewHolder holder = null;
if(convertView == null){
convertView = mInflater.inflate(R.layout.list_item, null);
holder = new ViewHolder();
holder.tvTitle = (TextView) convertView.findViewById(R.id.tv_title);
convertView.setTag(holder);
} else{
holder = (ViewHolder) convertView.getTag();
}
holder.tvTitle.setText(list.get(position));
return convertView;
}
public class ViewHolder{
public TextView tvTitle;
}}AppMainActivity.java
public class AppMainActivity extends Activity {
private final static String TAG = "AppMainActivity";
private ListView mList;
MyAdapter adapter = null;
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mList = (ListView) findViewById(R.id.lv_display);
ArrayList<String> data = new ArrayList<String>();
for(int i = 0; i < 80; i++){
data.add("Item " + i);
}
adapter = new MyAdapter(this, data);
mList.setAdapter(adapter);
}
}
我哪里写的不对
android:layout_height="wrap_content"改成
android:layout_height="fill_parent"
也是在论坛的一个角落里发现的。ListView的layout_height属性不设置成fill_parent总会出一些问题
所以在使用ListView的时候一定记得这个属性。