-1

I'm getting a NullPointerException when I run my application:

LogCat

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference at org.example.km.json3.Helper.SwipeListAdapter.getView(SwipeListAdapter.java:52)

The class is given below :

public class SwipeListAdapter extends BaseAdapter {

    private Activity activity;
    private LayoutInflater layoutInflater;
    private List<StockDetails> listStockDetails;


    public SwipeListAdapter(Activity activity, List<StockDetails> listStockDetails) {
        this.activity = activity;
        this.listStockDetails = listStockDetails;

    }

    @Override
    public int getCount(){
        return listStockDetails.size();
    }
    @Override
    public Object getItem(int position) {
        return listStockDetails.get(position);
    }

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

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

        if(layoutInflater == null) {
            layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        if(convertView == null){
            layoutInflater.inflate(R.layout.list_row, null);
        }
//This is the line number : 52

            TextView txtStockId = (TextView) convertView.findViewById(R.id.txtStockId);
            TextView txtStockTag = (TextView) convertView.findViewById(R.id.txtStockTag);
            TextView txtStockExchange = (TextView) convertView.findViewById(R.id.txtStockExchange);
            TextView txtStockRate = (TextView) convertView.findViewById(R.id.txtStockRate);
            TextView txtStockChange = (TextView) convertView.findViewById(R.id.txtStockChange);
            TextView txtStockChangePercent = (TextView) convertView.findViewById(R.id.txtStockChangePercent);
            TextView txtStockPreviousClosing = (TextView) convertView.findViewById(R.id.txtStockPreviousClosing);

            txtStockId.setText(listStockDetails.get(position).id);
            txtStockTag.setText(listStockDetails.get(position).t);
            txtStockExchange.setText(listStockDetails.get(position).e);
            txtStockRate.setText(listStockDetails.get(position).l);
            txtStockChange.setText(listStockDetails.get(position).c);
            txtStockChangePercent.setText(listStockDetails.get(position).cp);
            txtStockPreviousClosing.setText(listStockDetails.get(position).pcls_fix);

        return convertView;
    }
}
Zoe
  • 27,060
  • 21
  • 118
  • 148
Kanishka Munshi
  • 530
  • 1
  • 4
  • 11

1 Answers1

0

Change

if(convertView == null){
    layoutInflater.inflate(R.layout.list_row, null);
}

To

if(convertView == null){
    convertView = layoutInflater.inflate(R.layout.list_row, null);
}

Since the Views are created in the first time that getView() is called (there's no View to be reused, yet), your convertView is null.

You are properly inflating the layout for this case... However, you are not saving the returned View. This way, convertView remains null and convertView.findViewById() produces a Null Pointer Exception

guipivoto
  • 18,327
  • 9
  • 60
  • 75