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

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

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

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

4092閲覧

ListViewに最初の1行しか表示されない

monol

総合スコア14

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2018/12/09 13:06

前提・実現したいこと

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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

自己解決

ScrollView配下にListViewを配置していた事が原因のようです。
ScrollViewから外すと正常に表示されました。

お騒がせして失礼しました。

参考:https://stackoverflow.com/questions/11403086/why-is-my-baseadapter-class-not-incrementing-the-position-in-getview/13603323#13603323

投稿2018/12/09 14:54

monol

総合スコア14

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問