0

カスタム カーソル アダプタを使用して、SQlite ビューからリストビューのカテゴリを取得しています。また、同じカテゴリ名で保存された特定の行数を表示したいと考えています。何度も試してみましたが、残念ながら成功しませんでした。

ここで私が使用したクエリ

int GetTasksCountByCategory(String cat)
 {

     Cursor cur = mDb.rawQuery(" SELECT Count(*) FROM  ViewTasks where Category_name = "+"'"+"cat"+"'", null);
     int x = 0;
     if (cur.moveToFirst())
     {
         x = cur.getInt(0);
     }

        cur.close();
        return x;    
 }

そして私のアダプタークラス

public class cursorAdapter2 extends CursorAdapter{
    private Context mContext;
    DbAdapter myAdapter = new DbAdapter(mContext);

    @SuppressWarnings("deprecation")
    public cursorAdapter2(Context context, Cursor c) {
        super(context, c);
        mContext=context;
        // TODO Auto-generated constructor stub
    }

    @Override
    public View newView(Context arg0, Cursor arg1, ViewGroup arg2) {
        // TODO Auto-generated method stub
         LayoutInflater inflater = LayoutInflater.from(arg2.getContext());
         View retView = inflater.inflate(R.layout.list, arg2, false);

        return retView;
    }

    @SuppressWarnings("unused")
    @Override
    public void bindView(View view, Context arg1, Cursor cursor) {
        // TODO Auto-generated method stub
        TextView category = (TextView) view.findViewById(R.id.txtLastcatId);
        category.setText(cursor.getString(cursor.getColumnIndex(DbAdapter.KEY_CATEGORY_NAME)));

         String getCat = (String) category.getText();
           int i = myAdapter.GetTasksCountByCategory(getCat);
        Button count = (Button) view.findViewById(R.id.button2);
        count.setText(Integer.toString(i));

        Button img = (Button) view.findViewById(R.id.button1);
    }

}

これで私はヌルポインタ例外を取得します誰か助けてください事前に感謝します

4

1 に答える 1

2

2つのこと。まず、DbAdapter myAdaptermContext に値がある場合、クラスのコンストラクターで の割り当てを行う必要があります。

public cursorAdapter2(Context context, Cursor c) {
    super(context, c);
    mContext=context;
    myAdapter = new DbAdapter(mContext);
}

次に、...からクエリを変更します。

Cursor cur = mDb.rawQuery(" SELECT Count(*) FROM  ViewTasks where Category_name = "+"'"+"cat"+"'", null);

Cursor cur = mDb.rawQuery("SELECT Count(*) FROM ViewTasks where Category_name = ?", new String[] { cat } );

"cat"変数ではなく文字列を渡していますcat

于 2013-02-18T14:01:49.027 に答える