簡體   English   中英

我的bindView中的開關未運行預期的情況

[英]A switch in my bindView is not running the expected cases

我正在嘗試使用ImageView和SQLite數據庫中的三個TextView填充列表。 我期望的是TextView的數據,但ImageView永不更改。

ImageView應該根據y列中x行的Cursor值在兩個圖標之間交換。 該列填充有10Integer 如果y @行x ImageView 1,則紅色圖像應填充ImageView 如果為0,則綠色圖像應為。

那似乎永遠不會發生。 它始終是紅色圖像,logcat總是說光標的值為1。

04-14 08:24:04.188: A/example.stackoverflow.MainActivity@1840e274(6510):
04-14 08:24:04.191: D/cursor@iconHolder(6510): 1
04-14 08:24:04.191: D/icon(6510): true 1
04-14 08:24:04.191: V/date(6510): 2015-04-14 becomes April, 14
04-14 08:24:04.192: A/example.stackoverflow.MainActivity@1840e274(6510):
04-14 08:24:04.193: D/cursor@iconHolder(6510): 1
04-14 08:24:04.194: D/icon(6510): true 1

這是SQLite數據庫的片段。

_id, weight,            height,               body_mass_index,   icon, date

"1","45.359233334609435","1778.003556007112","14.348300215310468","0","2015-04-14"
"2","47.627195001339906","1778.003556007112","15.06571522607599","1","2015-04-14"
"3","45.359233334609435","1778.003556007112","14.348300215310468","0","2015-04-14"

如您所見,該圖標應該先是綠色,然后是紅色,然后是綠色,但是它只是三遍都變成紅色。 在弄清為什么我的代碼不起作用的過程中,我將非常感謝您的幫助。 這是我的bindView

@Override
    public void bindView(View view, Context context, Cursor cursor) {
        ImageView iconView = (ImageView) view.findViewById(R.id.richListIcon);
        TextView weightInfo = (TextView) view.findViewById(R.id.personal_item1);
        TextView bmiInfo = (TextView) view.findViewById(R.id.personal_item2);
        TextView dateInfo = (TextView) view.findViewById(R.id.timestamp_item);

        int indexWeight;
        int indexBmi;
        int indexDate;

        String weightHolder = null;
        String weightModified = null;
        String bmiHolder = null;
        String bmiModified = null;
        String dateHolder = null;
        String upDateHolder = null;
        int iconHolder = 3;
        int iconSet;



        if (cursor != null) {
            Log.wtf(String.valueOf(getActivity()), "not null");
            iconHolder = (cursor.getColumnIndex
                    (DatabaseAdapter.DataManager.publicIconSetter));
            Log.d("cursor@iconHolder", String.valueOf(cursor.getColumnIndexOrThrow
                    (DatabaseAdapter.DataManager.publicIconSetter)));
            weightHolder = (String.valueOf
                    (cursor.getDouble(cursor.getColumnIndex
                            (DatabaseAdapter.DataManager.publicWeight))));
            bmiHolder = (String.valueOf
                    (cursor.getDouble(cursor.getColumnIndex
                            (DatabaseAdapter.DataManager.publicBMI))));
            dateHolder = (String.valueOf
                    (cursor.getString(cursor.getColumnIndex
                            (DatabaseAdapter.DataManager.publicDate))));

        }

        switch (iconHolder){
            case 0:
                iconSet = R.mipmap.green_icon;
                Log.d("icon", "false " + iconHolder);
                break;
            case 1:
                Log.d("icon", "true " + iconHolder);
                iconSet = R.mipmap.red_icon;
                break;
            default: iconSet = R.mipmap.ic_launcher;
                Log.wtf("IVF_IconSetter", "Error, value from table is " + iconHolder);
        }
        iconView.setImageResource(iconSet);

    ...

    }

還有我的十字軍

 public Cursor getAllData(){
    SQLiteDatabase database = dataManager.getReadableDatabase();
    String[] columns = {DataManager.UID,
            DataManager.Icon_Gained_Weight,
            DataManager.Weight,
            DataManager.BMI,
            DataManager.Date
    };
    String orderBy = DataManager.UID + " DESC";

    Cursor cursor = null;
    try {
        cursor = database.query(DataManager.TABLE_NAME, columns, null, null, null, null, orderBy);
        if(cursor != null){
            cursor.moveToFirst();

        }

    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    }
    return cursor;
}

Playmaker420已解決了此問題。 如果Playmaker420選擇不這樣做,我會寫下答案。

方法getColumnIndex()返回列的索引/位置,而不是其值。 在您的情況下,返回的值始終為“ 1”,因為它是第二列(如在columns數組中所見)。 您應該使用getInt()方法:

iconHolder = (cursor.getInt(cursor.getColumnIndex(/** here goes the column name */)));
System.out.println(cursor.getString(cursor.getColumnIndex("icon")); 

這應該打印列“ icon”的值

暫無
暫無

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

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