-1

I have an adapter like this

if(modelSalesAct.getStatus().equals("2"))
    {
        viewHolder.ivStatus.setImageResource(R.drawable.ic_black);
    }
    else
    if(modelSalesAct.getStatus().equals("3")||modelSalesAct.getStatus().equals("4"))
    {
        viewHolder.ivStatus.setImageResource(R.drawable.ic_yellow);
    }
    else
    if(modelSalesAct.getStatus().equals("5"))
    {
        viewHolder.ivStatus.setImageResource(R.drawable.ic_red);
    }

this is to set different image match with condition status. But I get a error message like this

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference at com.kreators.nvmobile.dashboard.AdapterSalesAct.getView(AdapterSalesAct.java:133)

error stopped on line I am setImageResource from my drawable. Why is it happen ? I don't know what happen. Can anyone help me ?

FYI, this my my ViewAdapter

        ViewHolder viewHolder; // view lookup cache stored in tag

    final View result;

    if (convertView == null) {

        viewHolder = new ViewHolder();
        LayoutInflater inflater = LayoutInflater.from(getContext());
        convertView = inflater.inflate(R.layout.row_sales_act, parent,
                false);
        viewHolder.ivHeader = (ImageView)
                convertView.findViewById(R.id.ivHeader);
        viewHolder.txtCUSTID = (TextView)
                convertView.findViewById(R.id.ADAPTERCUSTID);
        viewHolder.txtSalesName = (TextView)
                convertView.findViewById(R.id.ADAPTERSALESNAME);
        viewHolder.txtSales = (TextView)
                convertView.findViewById(R.id.ADAPTERSALES);
        viewHolder.txtChannel = (TextView)
                convertView.findViewById(R.id.tvCustomer);
        viewHolder.ivStatus = (ImageView)
                convertView.findViewById(R.id.ivStatus);
        viewHolder.txtTarget = (TextView)
                convertView.findViewById(R.id.tvTarget);
        viewHolder.txtSI = (TextView)
                convertView.findViewById(R.id.tvSI);
        viewHolder.txtPercentPSI = (TextView)
                convertView.findViewById(R.id.tvPercentPSI);
        viewHolder.txtPercentSI = (TextView)
                convertView.findViewById(R.id.tvPercentSI);
        viewHolder.txtSO = (TextView)
                convertView.findViewById(R.id.tvSO);
        viewHolder.txtAR = (TextView)
                convertView.findViewById(R.id.tvAR);

        result=convertView;
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
        result=convertView;
    }

    viewHolder.txtCUSTID.setText(modelSalesAct.getCUSTID());
    viewHolder.txtSalesName.setText(modelSalesAct.getSALESNAME());
    viewHolder.txtSales.setText(modelSalesAct.getSALES());
    viewHolder.txtChannel.setText(modelSalesAct.getChannel());

    if(modelSalesAct.getStatus().equals("2"))
    {
        viewHolder.ivStatus.setImageResource(R.drawable.ic_black);
    }
    else
    if(modelSalesAct.getStatus().equals("3")||modelSalesAct.getStatus().equals("4"))
    {
        viewHolder.ivStatus.setImageResource(R.drawable.ic_yellow);
    }
    else
    if(modelSalesAct.getStatus().equals("5"))
    {
        viewHolder.ivStatus.setImageResource(R.drawable.ic_red);
    }
    viewHolder.txtTarget.setText(modelSalesAct.getTarget());
    viewHolder.txtSI.setText(modelSalesAct.getSI());
    viewHolder.txtPercentSI.setText(modelSalesAct.getPercentSI());
    viewHolder.txtPercentPSI.setText(modelSalesAct.getPercentPSI());
    viewHolder.txtSO.setText(modelSalesAct.getSO());
    viewHolder.txtAR.setText(modelSalesAct.getAR());

    return convertView;

3 Answers3

2

In your ViewAdapter do

ImageView ivStatus = (ImageView)convertView.findViewById(R.id.ivStatus);

and

if(modelSalesAct.getStatus().equals("2"))
    {
        ivStatus.setImageResource(context.getResources().getDrawable(R.drawable.ic_black));
    }
nimi0112
  • 2,065
  • 1
  • 18
  • 32
0

Check whether you have id ivStatus in row_sales_act.xml for Imageview, the problem is when you are trying to find a view which id has not been found at place where you are looking at, it will return null.

Rajan Kali
  • 12,627
  • 3
  • 25
  • 37
0

You were unable to find the id for ivHeader in this line.

viewHolder.ivHeader = (ImageView)
                convertView.findViewById(R.id.ivHeader);

Therefore you are getting null pointer exception.
Put a debugger & make sure whether ivHeader is present in your row_sales_act.xml layout file

Dr.jacky
  • 3,341
  • 6
  • 53
  • 91