前提・実現したいこと
SQLiteに保存したデータをArrayAdapterを使ってListViewに表示したい。
発生している問題・エラーメッセージ
ListViewに最初の1行しか表示されない
エラーメッセージは特に出ていない
該当のソースコード
android(Java)
1public class MainActivity extends AppCompatActivity { 2 3 ListView listView; 4 DBAdapter dbAd; 5 ListAdapter lsAd; 6 List<RecordData> recordData; 7 Cursor cursor; 8 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.activity_main); 13 14 recordData = new ArrayList<>(); 15 16 17 dbAd = new DBAdapter(getApplicationContext()); 18 19 dbAd.openDB(); 20 21 //DBの初期化 22 dbAd.delDB(null, null); 23 24 dbAd.saveDB("テスト1", "50", "10"); 25 dbAd.saveDB("テスト2", "60", "20"); 26 27 cursor = dbAd.getDB(null); 28 29 30 for (boolean next = cursor.moveToFirst(); next; next = cursor.moveToNext()) { 31 32 RecordData rdBuf = new RecordData(cursor.getString(1), cursor.getString(2), cursor.getString(3)); 33 34 recordData.add(rdBuf); 35 36 } 37 38 cursor.moveToFirst(); 39 dbAd.closeDB(); 40 41 lsAd = new ListAdapter(this, 0, recordData); 42 43 listView = (ListView) findViewById(R.id.list_view); 44 listView.setAdapter(lsAd); 45 46 47 } 48} 49 50************************************** 51public class ListAdapter extends ArrayAdapter<RecordData> { 52 53 LayoutInflater inflater; 54 ArrayList<RecordData> recordData = new ArrayList<>(); 55 56 public ListAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull List<RecordData> objects) { 57 super(context, resource, objects); 58 59 this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 60 61 recordData.addAll(objects); 62 63 } 64 65 @NonNull 66 @Override 67 public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { 68 69 70 if (convertView !=null){ 71 72 }else{ 73 convertView = this.inflater.inflate(R.layout.record,parent,false); 74 } 75 76 RecordData rd = getItem(position); 77 78 EditText trName = (EditText)convertView.findViewById(R.id.tr_name); 79 trName.setText(rd.trName); 80 EditText weight = (EditText)convertView.findViewById(R.id.weight); 81 weight.setText(rd.weight); 82 EditText num = (EditText)convertView.findViewById(R.id.number); 83 num.setText(rd.num); 84 85 86 return convertView; 87 } 88} 89
試したこと
デバッグで確認しましたが、getViewの引数positionがずっと0のまま変わりません。
getViewが明示的に呼ばれるものではないので、どこを調べて良いのかわからず、質問させて頂きました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。