Bytecode
Bytecode

Reputation: 6591

Android simpleCursor Adapter

hi am using cursor adapter for my listview, my problems is when i put my application in background ,on retuning my screen is empty, in onresume i have open the database and creating cursor still i have the problem, how can i solve my problem ,pls help me .

searchCursor= dbReaderContact.rawQuery(query, null);
startManagingCursor(searchCursor);
String[] from=new String[] {ALDbAdapter.TITLE,DbAdapter.CATID,DbAdapter.LTID,DbAdapter.RK,DbAdapter.SUBTITLE};
                        int [] to=new int[] {R.layout.ctllist_item};
catSearchAdapter=new CategorySearchAdapter(context, R.layout.ctllist_item, searchCursor, from, to);

//////////////Adapter calss

public class CategorySearchAdapter extends SimpleCursorAdapter implements Filterable{

    private Context context;
    private int layout;
    private ALDbAdapter dbadapter;

    /**
     * @param context
     * @param layout
     * @param c
     * @param from
     * @param to
     */
    public CategorySearchAdapter(Context context, int layout, Cursor c, String[] from,  int[] to) {
        super(context, layout, c, from, to);
        this.layout=layout;
        this.context=context;

        dbadapter=new ALDbAdapter(context);
        try {
            dbadapter.openAngiesListDb();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

     @Override
        public Cursor runQueryOnBackgroundThread(CharSequence constraint) {
            if (getFilterQueryProvider() != null) { return getFilterQueryProvider().runQuery(constraint); }

            StringBuilder buffer = null;
            String[] args = null;
            if (constraint != null) {
                buffer = new StringBuilder();
                buffer.append("UPPER(");
                buffer.append("name");
                buffer.append(") GLOB ?");
                args = new String[] { constraint.toString().toUpperCase() + "*" };
            }
            Cursor c=null;
           // c=dbadapter.getPartialNamesSearch(constraint.toString());
            return c;
        }
     @Override
        public void bindView(View v, Context context, Cursor c) {

            TextView subTitle=(TextView)v.findViewById(R.id.ctlName);
            TextView title=(TextView)v.findViewById(R.id.cltAssocationName);
            ImageView imgIcon=(ImageView)v.findViewById(R.id.ctlLogo);

            int subTitInd=c.getColumnIndex(ALDbAdapter.SUBTITLE);
            int titInd=c.getColumnIndex(ALDbAdapter.TITLE);
            int ltId=c.getColumnIndex(ALDbAdapter.LTID);
            int ltype=c.getInt(ltId);
            if(!c.getString(subTitInd).equalsIgnoreCase("")){
                subTitle.setText(c.getString(subTitInd));
                title.setText(c.getString(titInd));
            }else{
                subTitle.setText(c.getString(titInd));
            }
            if(ltype==1){
                imgIcon.setImageResource(R.drawable.logo1);
            }else if(ltype==2){
                imgIcon.setImageResource(R.drawable.logo2); 
            }else{
                imgIcon.setImageResource(R.drawable.logo3); 
            }
        }

}
//On post i closed the cursor
///On Resume

searchCursor= dbReaderContact.rawQuery(query, null);
            startManagingCursor(searchCursor);

Upvotes: 0

Views: 457

Answers (1)

dranfi
dranfi

Reputation: 241

You are talking about ListView and using SimpleCursorAdapter. Don't you think creating your own ArrayAdaptor isn't more efficient : you create a class of your own to hold the data you want from your DB request (iterate over your Cursor), then you populate an ArrayList of that class. Then you give this ArrayList to a class which extens ArrayAdaptor. You should store the ArrayList in the ArrayAdaptor and override contructor and the public View getView(int position, View convertView, ViewGroup parent) method to create each view of your ListView.

You can google custom ListView (first result : http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/ ).

Upvotes: 1

Related Questions