user1550693
user1550693

Reputation: 33

Myadapter.notifyDataSetChanged() throwing error

I am trying to refresh the adapter as well as my list . But i have little confusion regarding where to place the method Myadapter.notifyDataSetChanged() and list.clear(), So that they will work for me... can any one please edit my code and help me to come out from it.. Here Is my code

@Override

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    calendars = Uri.parse("content://com.android.calendar/events");
    managedCursor = getContentResolver().query(calendars, null, null, null, null);
    if(managedCursor.getCount()==0){
        Toast.makeText(getBaseContext(), "There Is No Event To Show", Toast.LENGTH_SHORT).show();
        Intent i=new Intent(DisplayEventActivity.this,EventCalendarActivity.class);
        startActivity(i);
        finish();

    }else{
    setContentView(R.layout.displayevent);
    id=getIntent().getExtras().getLong("ID");
    event_ListView=(ListView)findViewById(R.id.eventList);
    event_ListView.setOnItemClickListener(this);

    }
}

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    model.getEventTitleList().clear();  
    myadapter.notifyDataSetChanged();
    event_ListView.setAdapter(myadapter);

    if(id==9){
        model=new MyEventModel(managedCursor);
        myadapter=new MyListAdapter(getApplicationContext(), model.getEventTitleList());
        event_ListView.setAdapter(myadapter);

    }else if(id==10){
        model=new MyEventModel(managedCursor);
        myadapter=new MyListAdapter(getApplicationContext(), model.getEventTitleList());
        event_ListView.setAdapter(myadapter);
    }

}


public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) {
    event_Id=model.getEventId();
    System.out.println("Event id from disp="+event_Id);
    Intent i=new Intent(DisplayEventActivity.this,UpdateEvent.class);
    i.putExtra("EventId", event_Id);
    startActivity(i);
    }
}

Upvotes: 0

Views: 222

Answers (2)

user1571573
user1571573

Reputation: 21

you are using myadapter.notifyDataSetChanged(); before initializing myadapter. Initialize it before using.

Upvotes: 1

Lazy Ninja
Lazy Ninja

Reputation: 22537

You should notify data change after setting data in the adapter.

protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    model.getEventTitleList().clear();  
    event_ListView.setAdapter(myadapter);

    if(id==9){
        model=new MyEventModel(managedCursor);
        myadapter=new MyListAdapter(getApplicationContext(), model.getEventTitleList());
        event_ListView.setAdapter(myadapter);

    }else if(id==10){
        model=new MyEventModel(managedCursor);
        myadapter=new MyListAdapter(getApplicationContext(), model.getEventTitleList());
        event_ListView.setAdapter(myadapter);
    }
    myadapter.notifyDataSetChanged();


}

Upvotes: 0

Related Questions