开发者社区> 问答> 正文

Android ,baseadapter,报错!

logcat如下:
screenshot

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);

展开
收起
爵霸 2016-03-10 11:49:00 2012 0
1 条回答
写回答
取消 提交回答
  • `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不对
    
    2019-07-17 18:57:22
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载