JF0001
JF0001

Reputation: 839

Cursor Adapter for populating TextView and ToggleButton in listview

I have the following code implemented in an Activity Class. Meanwhile, the Application crashes upon launching it.

What am I missing?

public class MainActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Object> {
private ListView obj;
DBHelper mydb;
SimpleCursorAdapter dataAdapter;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Cursor rs = mydb.getAllAlarms();
    startManagingCursor(rs);
    String[] from = new String[]{"name"};
    int[] to = new int[]{R.id.alarm_name};

    dataAdapter = new SimpleCursorAdapter(this, R.layout.listview_row, rs, from, to, 0);
obj = (ListView)findViewById(R.id.listViewAlarms);
obj.setAdapter(dataAdapter);
getSupportLoaderManager().initLoader(0, null, this);

    obj.setOnItemClickListener(new OnItemClickListener(){
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                long arg3) {
            //obj.getItemAtPosition(arg2);
            // TODO Auto-generated method stub
            String itemVal =(String) arg0.getItemAtPosition(arg2);

            Bundle dataBundle = new Bundle();
            dataBundle.putString("name", itemVal);
            Intent intent = new
                    Intent(getApplicationContext(),DisplayAlarm.class);
            intent.putExtras(dataBundle);
            startActivity(intent);
        }
    });

}

Upvotes: 0

Views: 63

Answers (1)

Lalit Fauzdar
Lalit Fauzdar

Reputation: 6363

You haven't put the cursor in your adapter. Change your code from this

dataAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.listview_row,
            null, new String[] { mydb.ALARMS_COLUMN_NAME, mydb.ALARMS_ACTIVATED},
            new int[] { R.id.alarm_name, R.id.alarm_activated }, 0);

to

dataAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.listview_row,
            rs, new String[] { mydb.ALARMS_COLUMN_NAME, mydb.ALARMS_ACTIVATED},
            new int[] { R.id.alarm_name, R.id.alarm_activated }, 0);

Also, instead of using mydb.ALARMS_COLUMN_NAME, mydb.ALARMS_ACTIVATED, just pass the column names.

Upvotes: 1

Related Questions