Strange behaviour with custom cursor adapter android
<p>i have been having this issue for some time now, and have not gotten an answer for it yet. i have this custom Cursor adapter which i use to populate a list view from an sqlite database. Now my issue is that i want to populate the listview based on certain conditions.An example is if the condition is important, the listview should display only data that fits into that criteria and so on. I already have working methods that query the database accordingly.</p>

<p>now my problem is that, i can't seem to populate the listviews based on those methods and conditions without:</p>

<p>1) creating a copy of the exact same custom cursor adapter and just changing the names variables.
2) creating a copy of the exact xml layout and changing the id's.</p>

<p>As i say, its working this way, but i feel am having unnecessary classes and xml layout since its exactly the same thing. I know am doing something wrong, i just don't know what. Please any help and explanation would be appreciated. here is the necessary part of the code Code for the CustomCursorAdapter:</p>

<pre><code> public class ViewItems extends ListActivity implements OnItemClickListener{

     DBAdapter adapter;
     Cursor cursor;
     ListView list;

     public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.view_list);
      adapter = new DBAdapter(this);
      adapter.open();
      fillData();

      list = (ListView)findViewById(android.R.id.list); // default android listView id
      list.setOnItemClickListener(this);


     }

     // Different method calls
     protected void fillImportantData() {
      Cursor cursor = adapter.retrieveImportant();
      startManagingCursor(cursor);

        String[] from = new String[]{DBAdapter.NAME, DBAdapter.DATE, DBAdapter.TIME, DBAdapter.PRIORITY};
        int[] to = new int[]{R.id.viewNameId, R.id.viewDateId, R.id.viewTimeId};

        customCursorAdapter items = new customCursorAdapter(this, R.layout.view_items, cursor, from, to);
        setListAdapter(items);   
     }



     public class customCursorAdapter extends SimpleCursorAdapter {
      private int layout;
      Context context;

      public customCursorAdapter(Context context, int layout, Cursor cursor, String[]from, int[] to) {
       super(context, layout, cursor, from, to);
       this.layout = layout;
       this.context = context;

      }


      @Override
      public void bindView(View view, Context context, Cursor cursor) {
       ViewHolder holder;

       if(view != null){
        holder = new ViewHolder();
        holder.viewName = (TextView)view.findViewById(R.id.viewNameId);
        holder.viewStartDate = (TextView)view.findViewById(R.id.viewDateId);
        holder.viewStartTime = (TextView)view.findViewById(R.id.viewTimeId);

        view.setTag(holder);
       }else{
        holder = (ViewHolder)view.getTag();
       }

       int namecol = cursor.getColumnIndex(DBAdapter.NAME); 
       String name = cursor.getString(namecol);


       if(holder.viewName != null){
       holder.viewName.setText(name);
       holder.viewName.setTextColor(Color.RED);
       }

       String startDate = cursor.getString(cursor.getColumnIndex(DBAdapter.DATE));
       holder.viewStartDate.setText(startDate);

       String startTime = cursor.getString(cursor.getColumnIndex(DBAdapter.TIME));
       holder.viewStartTime.setText(startTime);
      }


      @Override
      public View newView(Context context, Cursor cursor, ViewGroup parent) {

       LayoutInflater inflater = LayoutInflater.from(context);
       final View view = inflater.inflate(layout, parent, false);

       return view;
      }


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


    @Override
      public Object getItem(int position){
       return position;
      }

     }

     static class ViewHolder{
      TextView viewName;
      TextView viewStartDate;
      TextView viewStartTime;

     }

    }


// methods in database

public Cursor retrieveAll(){
  String[] resultColumns = new String[] {KEY_ID, NAME DATE, TIME, PRIORITY};
    Cursor cursor = db.query(DATABASE_TABLE, resultColumns, null, , null, null, null);
     return cursor; 
    }

public Cursor retrieveImportant(){
  String[] resultColumns = new String[] {KEY_ID, NAME DATE, TIME, PRIORITY};
  String[] condition = {"important"};
  Cursor cursor = db.query(DATABASE_TABLE, resultColumns, PRIORITY + "=" + "?", condition, null, null, null);
     return cursor; 
    }
</code></pre>
