ここから本文です

AndroidでArrayAdapterのカスタマイズについてアドバイスお願いします。 間違えて...

might1996midnightさん

2013/8/2610:51:54

AndroidでArrayAdapterのカスタマイズについてアドバイスお願いします。
間違えてVisualBasicカテゴリで質問してしまったので再度こちらから質問させてください。

Androidの勉強をしているのですが、

http://techbooster.jpn.org/andriod/ui/1282/

こちらのサイトのコードを丸々コピーして、ImageViewをCheckBoxに変更し、ListViewに表示するテキストはstrings.xmlにstring-arrayでリストを作り
String[] textlist = getResources().getStringArray(R.array.text_array);
とし、
for (String textitem : textlist){
CustomData item = new CustomData();
item.setTextData(textitem);
objects.add(item);
}
で代入し、チェックボックス付きのリストの作成、表示まではできました。
このリストの一部にチェックボックスを表示させたい為、ArrayAdapterを継承したクラスのオーバーライドしたgetviewの最後に
if ( position > 5){
checkbox.setVisibility(checkbox.INVISIBLE);
}
を追加したのですが、表示させるとリストのpositionの0番目のチェックボックスも非表示となってしまします。
ArrayListの要素の順番を変えてみたり、if文の条件を変えても見たのですが、リストの先頭が必ず非表示となってしまいます。
if文を除けば、すべての要素にチェックボックスが表示されます。
if文の条件に、position == 0 や、テキストのデータを取得し比較したりもしてみたのですが、変わらず非表示になってしまいます。
問題点わかりましたら、回答よろしくお願いします。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
479
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

niikoujpさん

編集あり2013/8/2613:19:50

えっと間違っていたらごめんなさい。
position > 5の時は書いてあるのに、
position <=5 の時が書いていないため、
一度INVISIBLEになったcheckboxが表示されないのではないでしょうか。

if ( position > 5){
checkbox.setVisibility(checkbox.INVISIBLE);
}else{
checkbox.setVisibility(checkbox.VISIBLE);
}

ArrayAdapter上のコントロールは、
たとえば、リストが100行ある際、100個用意されるわけでなく、
言い方がわるいですが、どうも使い回しをされているようです。
getViewは何度も呼び出しされるため、
毎回コントロールのプロパティは、初期化の必要がある場合があるようです。

質問した人からのコメント

2013/8/26 21:53:18

抱きしめる 表示しましたー!ありがとうございます!!
でも何故、一番最初に呼ばれてる要素が今回のような動作するのかいまひとつ理解できないところではあります。
もう少し勉強してみます。
またアドバイスよろしくお願いします!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。