0

I have tried to make a ListView using a CustomViewAdapter, but I am getting a NullPointerException.

MainActivity:

private Context context=this;
private ListView listView;
private List<AlarmModel> alarms;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_alarm_list);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    listView = (ListView) findViewById(R.id.listAlarm);

    // get data from SQLite
    DatabaseHandler db = new DatabaseHandler(context);

    db.addAlarmDB(new AlarmModel());
    db.addAlarmDB(new AlarmModel());
    alarms = db.getAllAlarmDB();


    //adding adapter
    CustomListViewAdapter adapter = new CustomListViewAdapter(context,alarms);
    listView.setAdapter(adapter);
}

This is my CustomListViewAdapter along with ViewHolder:

public class CustomListViewAdapter extends BaseAdapter {

private Context context;
private LayoutInflater inflater;
private List<AlarmModel> alarmListData = new ArrayList<>();

public CustomListViewAdapter(Context context, List<AlarmModel> data){
    this.context = context;
    this.alarmListData = data;
    inflater = LayoutInflater.from(this.context);
}

//this is ViewHolder class
public class ViewHolder{
    TextView alarmTimeText;
    TextView alarmTitleText;
    Switch alarmStatusSwitch;
}

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

@Override
public AlarmModel getItem(int position) {
    return alarmListData.get(position);
}

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

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

    //bind with list view
    if (convertView==null){
        convertView = inflater.inflate(R.layout.alarm_list_content,null);
        hold = new ViewHolder();
        hold.alarmTitleText = (TextView) convertView.findViewById(R.id.alarmTImeText);
        hold.alarmTitleText = (TextView) convertView.findViewById(R.id.alarmTitleText);
        hold.alarmStatusSwitch = (Switch) convertView.findViewById(R.id.alarmStatusSwitch);
        convertView.setTag(hold);
    }else{
        hold = (ViewHolder) convertView.getTag();
    }

    /// get data from model
    AlarmModel alarmData = getItem(position);
    hold.alarmTimeText.setText(alarmData.getTime());
    hold.alarmTitleText.setText(alarmData.getTitle());

    //this is for switch of alarm status
    if(alarmData.getStatus()==1){
        hold.alarmStatusSwitch.setChecked(true);
    }else{
        hold.alarmStatusSwitch.setChecked(false);
    }
    return convertView;
}

}

Logcat:

gist

PS: At CustomListViewAdapter.java:72 alarmData object isn't empty. I have checked it with Log.d.

sz ashik
  • 881
  • 7
  • 20

0 Answers0