0

私はアンドロイド用のシンプルなショッピングリストアプリケーションを開発しています。リストビューのアイテムを取り消し線で取り消したり、取り消し線を引いたりすることができます。しかし、閉じたアプリケーションを開いた後、アイテムの更新された(保存された)取り消し線を取得できません。すべてのアイテムが取り消し線からクリアされます。

これは、onItemClickListener用に実装したコードの一部です。

    if (checkedVals[position]==true)
                      {                   
                          TextView text1 = (TextView)arg1.findViewById(R.id.customitemsrowTV);
                          text1.setPaintFlags(text1.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
                          text1.setTextColor(0xff000000);
                          String strikethrough1 = "false";
                          dbAdapterItems.updateItemsStrikethroughRecord(rowitemsid, strikethrough1);
                          //checkedVals[position] = false;
                      }
                      else
                      {
                          TextView text1 = (TextView)arg1.findViewById(R.id.customitemsrowTV);
                          text1.setPaintFlags(text1.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
                          text1.setTextColor(0xff888888);
                          String strikethrough1 = "true";
                          dbAdapterItems.updateItemsStrikethroughRecord(rowitemsid, strikethrough1);
                          //checkedVals[position] = true;
                      }

リストビュー用に入力されたコードは次のとおりです。

TextView itemsRowTv = (TextView)convertView.findViewById(R.id.customitemsrowTV);
            TextView quantityRowTv = (TextView)convertView.findViewById(R.id.customquantityrowTV);
            TextView priceRowTv = (TextView)convertView.findViewById(R.id.custompricerowTV);

            cItems.moveToPosition(position);
            String itemName = cItems.getString(1);
            checkedVals[position] = Boolean.parseBoolean(cItems.getString(3));
            String itemQuantity = cItems.getString(4);
            String itemPrice = cItems.getString(5);


             if (checkedVals[position]==true)
             {                   
                 itemsRowTv.setText(itemName);
                 //TextView text1 = (TextView)arg1.findViewById(R.id.customitemsrowTV);
                // itemsRowTv.setPaintFlags(itemsRowTv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
                // itemsRowTv.setTextColor(0xff000000);
                // checkedVals[position] = false;
             }
             else
             {
                // TextView text1 = (TextView)arg1.findViewById(R.id.customitemsrowTV);
                 itemsRowTv.setText(itemName);
                 itemsRowTv.setPaintFlags(itemsRowTv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
                 itemsRowTv.setTextColor(0xff888888);
                // checkedVals[position] = true;
             }

物事がうまくいかない私の問題の解決策を親切に提案してください...ありがとう。

4

1 に答える 1

1

はい、getViewブロックに小さな編集を加えた後、解決策が得られました。

 if (checkedVals[position]==true)
             {                   
                 itemsRowTv.setPaintFlags(itemsRowTv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
                 itemsRowTv.setTextColor(0xff888888);

             }
             else if(checkedVals[position]==false)
             {

                 itemsRowTv.setPaintFlags(itemsRowTv.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG);
                itemsRowTv.setTextColor(0xff000000);
             }
于 2013-02-07T14:08:07.617 に答える