質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

538閲覧

[Android]カスタマイズしたListView内のCheckNoxを正常に作動させたい

stys

総合スコア12

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2018/11/13 07:09

前提・実現したいこと

AndroidStudioで作成したカスタマイズしたListView内のCheckNoxを正常に作動させたい

発生している問題・エラーメッセージ

初心者・初投稿です。拙い文章で申し訳ございません。

ListViewに、画像とテキストとチェックボックスのxmlを、カスタマイズしたAdapterを使って表示することはできましたが、リストのリサイクルが発生するためチェックボックスのtrue/falseがそのままになってしまい、正しいチェックボックスの表示ができません。

該当のソースコード

CustomAdapter.java

java

1package com.websarva.wigns.android.application; 2 3import android.content.Context; 4import android.graphics.Color; 5import android.view.LayoutInflater; 6import android.view.View; 7import android.view.ViewGroup; 8import android.widget.ArrayAdapter; 9import android.widget.CheckBox; 10import android.widget.ImageView; 11import android.widget.TextView; 12 13import java.util.List; 14 15//継承元のカスタムアダプターの変更 16public class CustomAdapter extends ArrayAdapter<CustomData> { 17 18 //LayoutInflaterクラスを作成 19 private LayoutInflater mLayoutInflater; 20 21 //ArrayAdapterを継承したクラス 22 public CustomAdapter(Context context, int textViewResourceId, List<CustomData> objects) { 23 24 super(context, textViewResourceId, objects); 25 mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 26 27 } 28 29 @Override 30 //ArrayAdapter内のgetViewクラスを変更 31 public View getView(int position, View convertView, ViewGroup parent) { 32 33 CustomData item = getItem(position); 34 35 //convertViewは使い回しされる可能性があるのでnullの時だけ新しく作る 36 if (convertView == null) { 37 convertView = mLayoutInflater.inflate(R.layout.custom_listview, null); 38 } 39 40 //ImageViewの取り込み 41 ImageView imageView; 42 imageView = convertView.findViewById(R.id.image); 43 imageView.setImageBitmap(item.getImageData()); 44 45 //TextViewの取り込み 46 TextView textView; 47 textView = convertView.findViewById(R.id.text); 48 textView.setText(item.getTextData()); 49 50 return convertView; 51 } 52} 53



CustomData.java

package com.websarva.wigns.android.application; import android.graphics.Bitmap; public class CustomData { private Bitmap imageData_; private String textData_; public void setImageData(Bitmap imageData_) { this.imageData_ = imageData_; } public Bitmap getImageData() { return imageData_; } public String getTextData() { return textData_; } public void setTextData(String textData_) { this.textData_ = textData_; } }

試したこと

CustomAdapter.javaの38行目のリストのリサイクルをやめて以下のコードに置き換えればチェックボックスも正常に表示されるが、如何せんしっくりこないので・・・

convertView = mLayoutInflater.inflate(R.layout.custom_listview, parent, false);

補足情報(FW/ツールのバージョンなど)

AndroidStudio 3.1.1
macOS Mojave ver,10.14

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

CustomDataにチェックされているかどうかの情報を持たせて、getViewの中でその情報を元にチェックボックスの状態を復元するように実装してみてください。

投稿2018/11/13 12:48

編集2018/11/13 12:49
kakajika

総合スコア3131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問