如何在baseadapter android中处理ArrayList中的空值

时间:2013-06-12 04:12:20

标签: java android baseadapter

我有一个ArrayList和一个BaseAdapter来扩充我的布局,当arraylist中的一个数组为空时,布局上的值显示文本“NaN%”它是如此烦人,我想从我的arraylist处理一个空数组,其中setText为(0%)。那么如何在baseadapter android中处理ArrayList的空值?这是我的代码:

   public class TabelNABDetail extends BaseAdapter {
    Context context;
    ArrayList<NabDetail> listData;//stack
    int count;

    public TabelNABDetail(Context context, ArrayList<NabDetail>listData){
        this.context=context;
        this.listData=listData;
        this.count=listData.size();
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
//      return count;
        return (listData==null) ? 0 : listData.size();
    }

    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View v, ViewGroup parent) {
        // TODO Auto-generated method stub
        View view= v;
        ViewHolder holder= null;


        if(view==null){
            LayoutInflater inflater=(LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
            view= inflater.inflate(R.layout.layout_tabel_detailnab, null);
            holder=new ViewHolder();
            holder.persen_hke1=(TextView)view.findViewById(R.id.varpersenke1);
            view.setTag(holder);
        }
        else{
            holder=(ViewHolder)view.getTag();

        }

        if (position==0) {
            holder.persen_hke1.setText("0%");


    } else {
        holder.persen_hke1.setText(String.format("%.5f",listData.get(position).getpersen_hke1())+"%");

    }
        return view;
    }

    static class ViewHolder{
        TextView ,persen_hke1;

    }

enter image description here

我想处理如果listData.get(position).getpersen_hke1()为空值,那将是holder.persen_hke1.setText("0%")如何解决它?

之前谢谢

1 个答案:

答案 0 :(得分:0)

像这样更改你的getView()

@Override
public View getView(int position, View v, ViewGroup parent) {
    // TODO Auto-generated method stub
    View view= v;
    ViewHolder holder= null;

    if(view==null){
       LayoutInflater inflater=(LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
       view= inflater.inflate(R.layout.layout_tabel_detailnab, null);
       holder=new ViewHolder();
       holder.persen_hke1=(TextView)view.findViewById(R.id.varpersenke1);
       view.setTag(holder);
    } else {
        holder=(ViewHolder)view.getTag();
    }

    if (position==0) {
       holder.persen_hke1.setText("0%");
    } else {
       **/////// these lines are extra lines add into your code** 

       NabDetail nabDetail = listData.get(position)
       if(!nabDetail.getpersen_hke1().equals(""))
          holder.persen_hke1.setText(String.format("%.5f",listData.get(position).getpersen_hke1())+"%");
       } else {
          holder.persen_hke1.setText("0%");
       }
    }
    return view;
}