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

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

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

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

Android

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

Android Studio

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

Q&A

解決済

3回答

4348閲覧

動的なListViewを作成して、listItems[]が大きくなるたびに、ListViewのlistの数も増やしたい。

edoooooo

総合スコア476

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2017/05/08 10:52

編集2017/05/09 03:09

・解決したい内容

動的なListViewを作成して、listItems[]が大きくなるたびに、ListViewも増やしたいです。

そこで、databaseからデータを取得して、listItems[]に一つずつ追加していき、
追加した、listItemsを、ArrayAdapterのadapterlistに代入して、
adapterlistをR.layout.simple_list_item_1にセットし、
listViewに adapterlistをsetAdapter();します。

この
動的なListViewを作成して、listItems[]が大きくなるたびに、ListViewも増やすためには、どうすればいいのでしょうか?

http://qiita.com/joji/items/dca48fb0e915077a01b2
後から、このサイトと同じことに気づいたのですが、なぜか表示されません。

java

1 2//--------------------------------------------------select()---------------------------------------------------------------------// 3 public void select() { 4 5 MyOpenHelper helper = new MyOpenHelper(this); 6 SQLiteDatabase db = helper.getReadableDatabase(); 7 8 String sql = "select data,username,comment from neardb;"; 9 10 Cursor c = db.rawQuery(sql, null); 11 c.moveToFirst(); 12 13 if (c != null) { 14 15 Integer count=c.getCount(); 16 listItems = new String[count]; 17 18 for (int i = 0; i < c.getCount(); i++) { 19 20 String date = c.getString(0); 21 String name = c.getString(1); 22 String comment = c.getString(2); 23 24 String in=null; 25 26 in += date + " " + name + ": " + comment + "\n"; 27 listItems[i] = in; 28 29 c.moveToNext(); 30 } 31 c.close(); 32 db.close(); 33 } 34 ListView listView = (ListView) findViewById(R.id.list_view); 35 36 ArrayAdapter<String> adapterlist = new ArrayAdapter<String>(LocationActivity.this, android.R.layout.simple_list_item_1, listItems); 37 adapterlist.setDropDownViewResource(android.R.layout.simple_list_item_1); 38 listView.setAdapter(adapterlist); 39 } 40}

java

1 //----------------------------------------------selectで、中身を更新したlistItemsのadapterをlistViewにset-----------------------------------------------// 2 String listItems[]; 3 @Override 4 protected void onStart() { 5 super.onStart(); 6 7listItems = new String[1]; 8 listItems[0] = ""; 9 10select(); 11 12 System.out.println("select後のlistItemのlength:"+listItems.length); 13//このように表示されます。 I/System.out: select後のlistItemのlength:57 14 15}

//本来は、ListViewをScrollViewで囲っているのに、それを記載していませんでした。そして、ScrollViewで囲っていることが原因でした。すみません。

xml

1//----------------------------------------------------ListViewのxml------------------------------------------------------// 2 3 4 <ListView 5 android:id="@+id/list_view" 6 android:layout_width="wrap_content" 7 android:layout_height="wrap_content" 8 android:textColor="#000" 9 ></ListView> 10 11

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

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

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

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

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

guest

回答3

0

ベストアンサー

このActivityのレイアウトはListViewだけではないはずです。
ListViewがScrollViewの中に入っていませんか?

投稿2017/05/09 02:51

Kmassa

総合スコア161

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

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

edoooooo

2017/05/09 02:55

入ってます。それが原因でしたか????すみません。 修正して確認してみます。
edoooooo

2017/05/09 03:00

改善しました。ありがとうございます。 コードを記載してなくて、すみませんでした。
edoooooo

2017/05/09 03:19 編集

ありがとうございます。 1画面に複数のListViewを表示 する際に使う技術なのですね。 私自身は、低いレベルで、ListViewを使う前にtextをScrollViewで表示していたために、 ListViewに変更した際に、Scrollを削除せずに、このようなことになってしまいました。 ListViewは、scrollできるということを知らないがための問題でした。 そして、このように1画面に複数のListViewを表示 することが可能なことも知れて勉強になりました。 ありがとうございました。
guest

0

ArrayAdapterに、addというメソッドがあるのでそれを使ってください。

投稿2017/05/08 14:42

swordone

総合スコア20649

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

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

edoooooo

2017/05/09 02:09

ありがとうございます。使ってみます。
edoooooo

2017/05/09 03:06

ArrayListは、使って、addメソッドを使うように変更しました。 その後、ScrollViewでLIstItemをかこっていたことが問題であることがわかりました。 コードを記載してなくて、申し訳ありませんでした。わかりやすく記載しようと思ったがために、問題となる場所を記載していませんでした。次からは、コードを省略する際に、しっかりとした現状に基づいて行います。
guest

0

onStartの中でlistItemsのlengthをログ出力してください、
また下記の情報を追記してください。
・selectはどこで呼ばれていますか。
・ListViewを増やすとはどういう意味ですか

投稿2017/05/08 13:19

yona

総合スコア18155

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

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

toutou

2017/05/09 01:49

この人の質問は毎回ログ確認をしてくださいから始まるのが面白いw
edoooooo

2017/05/09 02:36 編集

selectの呼ばれている場所、ListViewを増やすとは、listの数を増やすということ。 を問題文に追記しました。
edoooooo

2017/05/09 02:09 編集

このように表示されます。 I/System.out: select後のlistItemのlength:57
yona

2017/05/09 02:39

toutouさん 情報が圧倒的に少ない、それに自分でデバッグをやっているつもりになっているのでそう回答するしかないんですよ。
yona

2017/05/09 02:41

配列を要素数1で宣言しているからですね。例外で強制終了しそうですが、どこかでキャッチしているのかもしれないですね。 動的に変わるのであればArrayListを使ってください。
edoooooo

2017/05/09 02:54 編集

toutoさんは、回答でなく、質問に対して言ってるので、僕に言ってると思います。すみません。 addメソッドを使おうとして、 ArrayAdapter<String> adapter = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, listItems); のlistItemsにlistItems[]を使っていたのですが、ArrayListに変えました。 final ArrayList<String> listItems = new ArrayList<>(); と定義して、 listItems.add(in);のようにしました。 ListViewのlistの数は、増えなかったのですが、もう一度確認します。一度返信します。
edoooooo

2017/05/09 03:03 編集

ArrayListは、使うようにして、そこで、ScrollViewでLIstItemをかこっていたことが原因でした。 コードを記載してなくて、申し訳ありませんでした。わかりやすく記載しようと思い、良かれと思って省略していたのですが、それが原因で迷惑をかけました。すみませんでした。次からは、コードを省略する際に、しっかりとした現状に基づいて行います。
toutou

2017/05/09 07:15

あれはedooに当てて言ったもの。そもそも質問者さんに「毎回ログの提示お願いしてるな」と思わせる状況がそもそもおかしいと思います。そんな配慮は質問をする側がするべきだし、次の質問では前提条件として言われる前に出そうと考えます。それができていないからこういう状況になってます。ログの提示の要求というワンステップが無駄。勘違いにせよ情報量が圧倒的に少ないと言わせないようにした方がいいと思います。編集もなるべく避けてください。というのも、最初から出しておけばいい情報をださずに、後から出すために使ってるから。要求もされないのに追加でかなりだせると言うのは変かと。酷いときは質問自体変わってますしね。
edoooooo

2017/05/09 07:26

内容の変更を少なくして、時間帯によって解決策が異なるなんてことが内容にします。
yona

2017/05/09 07:59

toutouさん edooさんに当ててのコメントだと理解しています。 toutouさんの意見に同意するためのコメントを書いたつもりだったんですが、文がイマイチでした、ごめんなさい。
toutou

2017/05/09 08:05

yonaさん 私もその認識でしたwわざわざ自分の質問にまで殴りこんできたんで、よほど解説がほしいのかなということで書いてみました。2連続Spinnerはロングクリックのくだりもおもしろかったですw
edoooooo

2017/05/09 15:19 編集

自分の思い込みで、説明をいただきありがとうございました。 お二方に迷惑をかけました。すみませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問