ListViewのお話 Vol.2

2014/05/12 15:04:22
消費税が上がっていくらになるかわからなくなったので、


ねこに小判を作りました。


数字を打ち込んでエンター押していくだけで簡単に合計がわかります。

また、『便乗値上げチェッカー』を搭載してるので、

便乗値上げしてる店を発見したら店長を呼び出し、

どういうことなのか、小一時間問い詰めることができるでしょう。



それでは以前のListViewのお話です。

ListViewで一件だけ削除は問題ないというとこまで話をしましたが、

ある条件の物を削除するということをした際に問題が発生しました。

for文でindexを使いremoveする時は、
ListView lv;
// アダプターを取得する
OrenoAdapter adpter = (OrenoAdapter)lv.getAdapter();
if(adpter != null){
 final int max = adp.items.size() - 1;
 // ぐるぐるする
 for(int i = max; i >= 0; i--){
  // itemを取得
  OrenoClass ore = adp.items.get(i);
  if(ore != null){
   // 削除する条件
   if(ore.id == 99){
    adp.remove(s);
   }
  }
 }
 adp.notifyDataSetChanged();
}


という感じにしましょう!

removeをすると、どうやら構造体が上に詰まる(正しい表現がわからん^ω^)ので、

indexの最大値から0まで逆に回せばおk!

0から回してて、消えてないアイテムがあったり、範囲外エラー出てたりちょっと悩まされてた。

謎が解ければなんてことないです。

あとオブジェクトを取り出した後はnullチェックしましょう。

nullチェックしないプログラマはプログラマにあらずです!


つかadpterを取り出した後に、foreachで回した方がよくね?

と思いやってみましたが、

java.util.ConcurrentModificationException

が発生します^ω^

結局removeをやることで、構造体が変わるのでけつから消せってことですね。




~こんなアプリ出してます~

authored by Noraneko | Comment(0) | Android
コメント


お名前*

Email Address

URL

コメント*

BLOG内検索
<< 2018/10 >>
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31