实现一个分组的ListView但是以滚动就会出现空指针的异常



activity_main.xml

MainActivity.java
package com.example.grouplistview;

import java.util.ArrayList;

import android.app.Activity;
import android.database.DataSetObserver;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.ListView;
/*
 * 分组ListView的测试
 */
public class MainActivity extends Activity {

private ListView listView=null;

// ListView当中的内容
private ArrayList<String> contentList=new ArrayList<String>();
//ListView当中的Tag内容
private ArrayList<String> tagList=new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        listView=(ListView) super.findViewById(R.id.list_view);
        
        setData();
        
        listView.setAdapter(new MyListAdapter(this,contentList,tagList));
        
    }
    
    
    public void setData(){
     //设置数据内容
    
     contentList.add("A");
     tagList.add("A");
    
     for(int i=0;i<4;i++){
     contentList.add("阿里巴巴"+i+1);
     }
    
     contentList.add("B");
     tagList.add("B");
    
     for(int i=0;i<4;i++){
     contentList.add("百度"+i+1);
     }
    
    
     contentList.add("C");
     tagList.add("C");
    
     for(int i=0;i<4;i++){
     contentList.add("吃饭"+i+1);
     }
    
    
//     contentList.add("D");
//     tagList.add("D");
//    
//     for(int i=0;i<4;i++){
//     contentList.add("冻死人"+i+1);
//     }
    }
}

MyListAdapter.java
package com.example.grouplistview;

import java.util.ArrayList;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MyListAdapter extends BaseAdapter{

private Context context;
private ArrayList<String> contentList;
private ArrayList<String> tagList;

public MyListAdapter(Context context,ArrayList<String> contentList,ArrayList<String> tagList){
this.context=context;
this.contentList=contentList;
this.tagList=tagList;


}


@Override
public int getCount() {
return contentList.size();
}

@Override
public Object getItem(int position) {
return contentList.get(position);
}

@Override
public long getItemId(int position) {
return position;
}



//禁止标签页的点击事件
@Override
public boolean isEnabled(int position) {

if(tagList.contains(getItem(position))){
return false;
}

return super.isEnabled(position);
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {

View view;

MainViews views;

if(convertView==null){

views=new MainViews();

if(tagList.contains(getItem(position))){
//表示该布局是一个Tag
view=LayoutInflater.from(context).inflate(R.layout.tag_content, null);

views.textView=(TextView) view.findViewById(R.id.tv_tag_name);
views.textView.setText(getItem(position).toString());

}else{
view=LayoutInflater.from(context).inflate(R.layout.content_item, null);

views.imageView=(ImageView) view.findViewById(R.id.iv_logo);
views.imageView.setImageResource(R.drawable.ic_launcher);

views.textView=(TextView) view.findViewById(R.id.tv_con_name);
views.textView.setText(getItem(position).toString());

}

view.setTag(views);

}
else{

view=convertView;
views=(MainViews) view.getTag();

if(!tagList.contains(getItem(position))){

views.imageView=(ImageView) view.findViewById(R.id.iv_logo);
views.imageView.setImageResource(R.drawable.ic_launcher);


views.textView=(TextView) view.findViewById(R.id.tv_con_name);
views.textView.setText(getItem(position).toString());

}
else{
views.textView=(TextView) view.findViewById(R.id.tv_tag_name);
views.textView.setText(getItem(position).toString());
}

}
Log.e("view", R.drawable.ic_launcher+"");

return view;
}



class MainViews{
TextView textView;
ImageView imageView;
}
}

content_item.xml
<?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="horizontal" >
    <!-- 一条内容的布局方式 -->
    
    <ImageView android:id="@+id/iv_logo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    
    <TextView android:id="@+id/tv_con_name"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginLeft="5dip"/>

</LinearLayout>

tag_content.xml
<?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:background="#cccccc"
    android:orientation="vertical" >
    <!-- tag的布局方式 -->
    
    <TextView android:id="@+id/tv_tag_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    

</LinearLayout>


求大神帮忙解决了,找了一天了也没找到原因
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值