2016-06-01 38 views
-1

实现自定义列表视图,我需要帮助,我一直在试图找到如何实现自定义列表视图的方式,我得到一个错误: -错误与BaseAdapter

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference at com.edis.edis.HospitalAdaptor.getView(HospitalAdaptor.java:62)

以下是对象是我已经创建并且它被称为Data.java

public class Data { 

private double lat, lon; 
public String name; 
String groupA, groupB, groupAB,groupO; 
public int url_image; 


public Data(double lat, double lon, int url_image, String name, String groupA, String groupB, String groupAB, String groupO) 
{ 
    this.lat =lat; 
    this.lon = lon; 
    this.url_image =url_image; 
    this.name = name; 
    this.groupA =groupA; 
    this.groupB =groupB; 
    this.groupAB = groupAB; 
    this.groupO = groupO; 
} 
} 

然后,我已经创建了一个适配器,其中我在哪里是chakula.setText((hospital.name))线得到一个错误(空对象)。

以下是我使用BaseAdaptor的适配器。 HospitalsAdaptors.java

public class HospitalAdaptor extends BaseAdapter{ 
    Context context; 
    List<Data> datas; 


    public HospitalAdaptor(Context context, List<Data> datas) { 

     this.context = context; 
     this.datas = datas; 

    } 


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

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

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


    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     Data hospital = (Data)getItem(position); 

     if(convertView == null){ 

      convertView = LayoutInflater.from(context).inflate(R.layout.fragment_hospitals,parent,false); 
      //convertView = LayoutInflater.inflate(R.layout.fragment_hospitals,parent,false); 
     } 

     TextView chakula = (TextView)convertView.findViewById(R.id.hospitals_name); 
     ImageView pilau = (ImageView)convertView.findViewById(R.id.hospitals_image); 

     chakula.setText(hospital.name); 

     Glide 
       .with(context) 
       .load(hospital.url_image) 
       .centerCrop() 
       .crossFade() 
       .into(pilau); 

     return convertView; 
    } 
} 
+0

为什么不用'ArrayAdapter'来代替? – pskink

+0

你有没有获得者和制定者? –

+0

请发布布局文件也 –

回答

0

替换此方法生成getter和setter在你的数据类。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    Data hospital = (Data)datas.get(position); 

    if(convertView == null){ 

     convertView = LayoutInflater.from(context).inflate(R.layout.fragment_hospitals,parent,false); 
     //convertView = LayoutInflater.inflate(R.layout.fragment_hospitals,parent,false); 
    } 

    TextView chakula = (TextView)convertView.findViewById(R.id.hospitals_name); 
    ImageView pilau = (ImageView)convertView.findViewById(R.id.hospitals_image); 

    chakula.setText(hospital.getName()); 

    Glide 
      .with(context) 
      .load(hospital.url_image) 
      .centerCrop() 
      .crossFade() 
      .into(pilau); 

    return convertView; 
} 
+0

你能帮忙请 – user3337660

+0

@ user3337660雅 – anonymous

+0

在你的Data类中首先生成setter和getter方法 – anonymous

0
you have just initialize variable not set value 

it should be like this 

     public Data(double lat, double lon, int url_image, String name, String groupA, String groupB, String groupAB, String groupO) 
    { 
     this.lat =lat; 
     this.lon = lon; 
     this.url_image =url_image; 
     this.name = name; 
     this.groupA =groupA; 
     this.groupB =groupB; 
     this.groupAB = groupAB; 
     this.groupO = groupO; 

setname(this.name) // same apply to all other 
    } 
+0

我想这应该如何工作,你可以帮忙吗? – user3337660

0

尝试这样

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

    if(convertView == null){ 

     convertView = LayoutInflater.from(context).inflate(R.layout.fragment_hospitals,parent,false); 
     //convertView = LayoutInflater.inflate(R.layout.fragment_hospitals,parent,false); 
    } 
    Data hospital = datas.get(position); 

    TextView chakula = (TextView)convertView.findViewById(R.id.hospitals_name); 
    ImageView pilau = (ImageView)convertView.findViewById(R.id.hospitals_image); 

    chakula.setText(hospital.name); 

    Glide.with(context) 
      .load(hospital.url_image) 
      .centerCrop() 
      .crossFade() 
      .into(pilau); 

    return convertView; 
} 
+0

它不工作.. – user3337660