前提・実現したいこと
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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。