簡體   English   中英

將意圖與sqlite一起使用后如何從列表視圖中獲取項目名稱?

[英]how to get the items name from listview after using intent with sqlite?

我有兩個列表視圖,每個列表視圖都在不同的活動中 我想通過長按它來將一個項目從第一個列表視圖發送到另一個列表視圖我使用意圖,我使用字符串文件來獲取它完美發送該項目的數據,但它的沒有保存到sqlite我不知道問題出在哪里請看我的代碼

First Activity(Main Activity):
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                @Override
                public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long l) {
                    Intent intent = new Intent(MainActivity.this, cc.class);
                    intent.putExtra("EXTRAKEY_ID",l);// THIS ADDED
                    startActivity(intent);
                    fav_name = getAllDataInCurrentLocale.getString(getAllDataInCurrentLocale.getColumnIndex(FAVOURITES_COL_NAME));
                    Toast.makeText(MainActivity.this, fav_name+" Added To Favorite", Toast.LENGTH_SHORT).show();



                    return true;
                }

            });
Second Activity(cc):
                fav_id = getIntent().getLongExtra("EXTRAKEY_ID", 0);

        manageFavouritesListView();


if (fav_id==0){


}



        getDataInCurrentLocaleById = dbSqlite.getDataInCurrentLocaleById(this,fav_id);
            if (getDataInCurrentLocaleById.moveToFirst()) {
                fav_name = getDataInCurrentLocaleById.getString(getDataInCurrentLocaleById.getColumnIndex(FAVOURITES_COL_NAME));


            }

        getDataInCurrentLocaleById.close();
        }


    private void manageFavouritesListView() {
        getDataInCurrentLocaleById = dbSqlite.getDataInCurrentLocaleById(this,fav_id);
        if (favourites_adapter == null) {
            favourites_adapter = new SimpleCursorAdapter(
                    this,
                    R.layout.textview2,
                    getDataInCurrentLocaleById,
                    new String[]{FAVOURITES_COL_NAME},
                    new int[]{R.id.textview10},
                    0
            );
            listView.setAdapter(favourites_adapter);
            setListViewHandler(listView, true);
        } else {
            favourites_adapter.swapCursor(getDataInCurrentLocaleById);
        }
    }
Db_Sqlite:
    public Cursor getAllDataInCurrentLocale(Context context) {
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor csr = db.query(TABLE_FAVOURITES,null,null,null,null,null,null);
        if (csr.getCount() < 1) return csr;
        MatrixCursor mxcsr = new MatrixCursor(csr.getColumnNames(),csr.getCount());
        while (csr.moveToNext()) {
            mxcsr.addRow(convertCursorRow(context,csr,new String[]{FAVOURITES_COL_NAME}));
        }
        csr.close();
        return mxcsr;
    }
    public Cursor getDataInCurrentLocaleById(Context context, long id) {
        SQLiteDatabase db = this.getWritableDatabase();
        String wherepart = FAVOURITES_COL_ID + "=?";
        String[] args = new String[]{String.valueOf(id)};
        Cursor csr = db.query(TABLE_FAVOURITES,null,wherepart,args,null,null,null);
        if (csr.getCount() < 1) return csr;
        MatrixCursor mxcsr = new MatrixCursor(csr.getColumnNames(),csr.getCount());
        while (csr.moveToNext()) {
            mxcsr.addRow(convertCursorRow(context,csr,new String[]{FAVOURITES_COL_NAME}));
        }
        csr.close();
        return mxcsr;
    }

    /* This getting columns from Cursor into String array (no BLOB handleing)*/
    public String[] convertCursorRow(Context context, Cursor csr, String[] columnsToConvert) {
        String[] rv = new String[csr.getColumnCount()];
        for (String s: csr.getColumnNames()) {
            boolean converted = false;
            for (String ctc: columnsToConvert) {
                if (csr.getType(csr.getColumnIndex(s)) == Cursor.FIELD_TYPE_BLOB) {
                    //........ would have to handle BLOB here if needed (another question if needed)
                }
                if (ctc.equals(s)) {
                    rv[csr.getColumnIndex(s)] = StringResourcesHandling.getStringByName(context,csr.getString(csr.getColumnIndex(s)));
                    converted = true;
                }
            } if (!converted) {
                rv[csr.getColumnIndex(s)] = csr.getString(csr.getColumnIndex(s));
            }
        }
        return rv;
    }

    }

我不知道問題出在哪里請幫助我提前謝謝

You should notify the adapter that data changed.

    private void manageFavouritesListView() {
            getDataInCurrentLocaleById = dbSqlite.getDataInCurrentLocaleById(this,fav_id);
            if (favourites_adapter == null) {
                favourites_adapter = new SimpleCursorAdapter(
                        this,
                        R.layout.textview2,
                        getDataInCurrentLocaleById,
                        new String[]{FAVOURITES_COL_NAME},
                        new int[]{R.id.textview10},
                        0
                );
                listView.setAdapter(favourites_adapter);
                favourites_adapter.notifyDataSetChanged();
                setListViewHandler(listView, true);
            } else {
                favourites_adapter.swapCursor(getDataInCurrentLocaleById);
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM