2 freedom wings5 freedom_wings5 于 2016.03.13 22:40 提问

安卓,baseadapter,报错,求指教

logcat如下:
图片说明

content_main:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
    android:layout_height="match_parent"

    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_main" tools:context=".MainActivity">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/listview"/>
</LinearLayout>

listview的布局:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textview1"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textview2"/>

</LinearLayout>

baseadapter的代码:

 public class MyAdapter extends BaseAdapter
{
    Context context;
    String[] tx1;
    String[] tx2;
    MyAdapter(Context context,String[] tx1,String[] tx2)
    {
        this.context=context;
        this.tx1=tx1;
        this.tx2=tx2;
    }
    @Override
    public int getCount()
    {
        return tx1.length;
    }
    @Override
    public Object getItem(int position)
    {
        return tx1[position];
    }
    @Override
    public long getItemId(int position)
    {
        return 0;
    }

    @Override
    public View getView(int position,View v,ViewGroup viewGroup)
    {
        View view;
        ViewHolder viewHolder;
        if(v == null) {
            view = LayoutInflater.from(context).inflate(R.layout.listview, viewGroup);
            ;

            TextView t1 = (TextView) view.findViewById(R.id.textview1);
            TextView t2 = (TextView) view.findViewById((R.id.textview2));

            t1.setText(tx1[position]);
            t2.setText(tx2[position]);

            viewHolder=new ViewHolder(t1,t2);
            view.setTag(viewHolder);
        }
        else
        {
            view=v;
            viewHolder=(ViewHolder)view.getTag();
        }

        return v;
    }

    class ViewHolder
    {
        public TextView t1;
        public TextView t2;
        ViewHolder(TextView t1,TextView t2)
        {
            this.t1=t1;
            this.t2=t2;
        }
    }

}

mainactivity中与listview有关的也就是:

ListView listView;
    String[] str1={"这是1","这是2","这是3","这是4","这是5"};
    String[] str2={"this is 1","this is 2","this is 3","this is 4","this is 5"};
 listView=(ListView)super.findViewById(R.id.listview);
        MyAdapter myAdapter=new MyAdapter(this,str1,str2);
        listView.setAdapter(myAdapter);

求指教,怎么解决?

4个回答

qq_21949639
qq_21949639   2016.03.13 23:20

settext放到return上面去,

danielinbiti
danielinbiti   Ds   Rxr 2016.03.13 23:26
 if(v == null) {
            view = LayoutInflater.from(context).inflate(R.layout.listview, viewGroup);
改成
if(v == null) {
            view = LayoutInflater.from(context).inflate(R.layout.listview, null);//传入viewGroup,则布局方式的layout不对
lly4321lly
lly4321lly   2016.03.14 18:21

view = LayoutInflater.from(context).inflate(R.layout.listview, viewGroup); viewGroup是默认把父布局ListView传进去,
你inflate生成的View会被通过addView的方式add到父布局也就是ListView里面,listView是不可以addView的,
listView是AdapterView的子类,所以会报错
改成 view = LayoutInflater.from(context).inflate(R.layout.listview, null);
或者 view = LayoutInflater.from(context).inflate(R.layout.listview, viewGroup,false);都可以

lxk_1993
lxk_1993   Rxr 2016.03.18 08:26

view = LayoutInflater.from(context).inflate(R.layout.listview, viewGroup);
;

                    viewGroup 改为  null 就好了
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
13.Android中万能的BaseAdapter的使用
大家好,今天给大家讲解一下Android BaseAdapter(基础适配器)的用法,适配器的作用主要是用来给诸如(Spinner、ListView、GridView)来填充数据的。而(Spinner、ListView、GridView)都有自己的适配器(记起来麻烦)。但是BaseAdapter(一招鲜)对他们来说却是通用的,为什么这么说呢,首先我们看一下API文档: 我们看到Android
Android 重写BaseAdapter碰到getView中convertView出现错误
原来的代码如下public class ArticleListAdapter extends BaseAdapter{ private LayoutInflater layoutInflater; private Context context; private List<ArticleListItem> list; private ViewHolder holder
Android BaseAdapter的使用
现在有许多的适配器供我们使用,但是我们发现处理复杂的itmes使往往使用的是BaseAdapter,下面上代码 main.xml xml version="1.0" encoding="utf-8"?> LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width
安卓学习之路_20140422_BaseAdapter点击监听事件、GridView
1、BaseAdapter点击监听事件
PagerAdapter跟BaseAdapter的覆盖
PagerAdapter主要用于各个页卡的滑动效果,这个数据源决定了现在显示第几个页卡的内容。BaseAdapter一般用于每个页卡内容的填充。 1、PagerAdapter至少需要重写的方法 instantiateItem(ViewGroup, int) destroyItem(ViewGroup, int, Object) getCount() isViewFromObject(V
Android-ListView适配器BaseAdapter的使用和优化
Android-ListView适配器BaseAdapter的使用 这是BaseAdapter的相应的方法属性。 像SimpleAdapter和ArrayAdapter都是继承于BaseAdapter。 可以查看其源码: SimoleAdapter ArrayAdapter 写几个小demo熟悉一下。activity_main.xml 设置组件ListView<Relative
Android:BaseListAdapter——提高开发效率的BaseAdapter
我们在使用ListView的时候,大多数时间都会继承BaseAdapter写适配器,会使用ViewHolder,然而当我们写的多了会发现,我们做了很多重复的体力劳动。接下来,为了提高开发效率、减少重复劳动,我对BaseAdapter进行了封装。 1、BaseViewHolder /** * 用于ListView 的ViewHolder * Created by HMY on 201
Openstack Keystone 认证流程(三)-WSGI
1. Web服务创建 在上一章中, 可以看在keystone-all中, 使用create_server创建了两个服务器, 先看看这个函数 from keystone.common import environment from paste import deploy ... def create_server(conf, name, host, port): app = depl
有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
第一种解法: [cpp] view plaincopyprint? /*  *copyright@nciaebupt 转载请注明出处  *问题:有两个序列a,b,大小都为n,序列元素的值任意整数,无序;  *要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。  *比如 a=[100 ,99 ,98
android--(布局图文混排GridView、BaseAdapter适配器)
activity: /** * 自定义适配器 * * 1.创建一个类,继承BaseAdapter类 * 2.实现4个方法 * getCount:获取要显示的选项总数 * * getItem :获取每一个选项,类情况而定 * * getItemId:获取每个选项的id * * getView :该方法用来为每一个选项生成视图(这里为:ImageView),