今天在写一个listview的时候,遇到一个问题,如下

packagecom.brookji.funlearn;

importjava.util.ArrayList;

importandroid.app.Activity;
importandroid.content.Context;
importandroid.os.Bundle;
importandroid.view.LayoutInflater;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.widget.BaseAdapter;
importandroid.widget.ListView;
importandroid.widget.TextView;

public classListViewActivity extendsActivity{

privateListViewlistView;
privateMyAdapteradapter;



@Override
protected voidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view);
listView=(ListView)findViewById(R.id.listviewlearn);
ArrayList<String>array= newArrayList<>();
array.add("jilichuan");
array.add("xumeifang");
adapter= newMyAdapter( this,array);
listView.setAdapter(adapter);
/* TextViewview=newTextView(this);
listView.addView(view);
view.setText("child");
*/


}


public classMyAdapter extendsBaseAdapter{

privateArrayList<String>items;
privateContextcontext;

publicMyAdapter(){
items= newArrayList<>();
}

publicMyAdapter(Contextcontext,ArrayList<String>items){
this.context=context;
this.items=items;
}


@Override
public intgetCount(){
// TODOAuto-generatedmethodstub
returnitems.size();
}

@Override
publicObjectgetItem( intposition){
// TODOAuto-generatedmethodstub
returnitems.get(position);
}

@Override
public longgetItemId( intposition){
// TODOAuto-generatedmethodstub
returnposition;
}

@Override
publicViewgetView( intposition,ViewconvertView,ViewGroupparent){
// TODOAuto-generatedmethodstub
convertView=((LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.listviewlearn_item_title, null);
TextViewtextView=(TextView)convertView.findViewById(R.id.listviewlearn_title);
textView.setText((String)getItem(position));

returnconvertView;
}

}

}

这段代码是可以运行的,

但是将倒数的代码

convertView=((LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.listviewlearn_item_title,null);

改为

convertView=((LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.listviewlearn_item_title,parent);

就会出错,那么就会问:子节点不就是放在listview低下吗?不就是子节点吗?怎么不能这样写呢?

醉深层次的原因我还不知道,但是浅层次的原因是:

在viewgroup中,addview方法不能运用于adapterview,而listview就是一个adapterview,而inflate实现的效果适合add一样的,因此不可以这样,只能设为null。

oncreate方法的最后三行注释掉了,不注释掉,同样会出错!

更多相关文章

  1. android source code下载源代码时出错
  2. Android(安卓)Studio报错 (androidx.recyclerview.widget.Recycl
  3. Ubuntu 12.04 Desktop 版本编译 Android(安卓)4.0.4 出错解决
  4. android Pull解析xml 使用小结
  5. Android中获取SQL Server中的数据
  6. Android创建XMl文件
  7. AndroidManifest 合并出错 tools:replace="android:allowBackup"
  8. android DecorView的使用
  9. Android7关闭selinux(设置为Permissive模式)

随机推荐

  1. GNOME Linux 桌面入门
  2. ADAS系统新能源车动力执行策略详解(二)
  3. 掌握 Linux 用户组
  4. Linux 的正则表达式
  5. 知荐 | AEB功能安全(四):AEB风险评估
  6. 在Linux上打开端口
  7. Linux 命令行简介
  8. 需要了解的Python编码解码知识
  9. Python列表操作最全面总结
  10. linux网络编程一:epoll