- Androidプログラミング質問スレ revision42
595 :デフォルトの名無しさん[sage]:2014/05/06(火) 01:09:53.82 ID:ev7B1aK7 - ttp://visible-true.blogspot.jp/2010/12/listview.html
ここを参考にテストしてるのですが、サンプルの通りにすると、きちんと動いたので、 次に、「リストに足される要素を1秒おきに1つづつ追加する」というのを試したら、 実行中にリストをタップしたらエラーになりました。 onCreateで、呼び出し for()で最大要素数までカウントしながら、 要素を1つaddして、 Threadを呼び出した中でリストを再描画 1秒sleepする という感じです。 リストを全部表示した後なら、エラーは出ないのですが、 リストを表示中のときに、リストをタップしたりするとエラーになります。 for()でループさせるのが、まずいのかな?という気がするのですが、そうなのでしょうか?
|
- Androidプログラミング質問スレ revision42
597 :デフォルトの名無しさん[sage]:2014/05/06(火) 02:44:56.85 ID:ev7B1aK7 - private final static String[] BASE_DATA = { "A"};
onCreate()で、 Thread th = new Thread1(); th.start(); private class Thread1 extends Thread { @Override public void run(){ for(int i=0;i<5;i++){ addListData(); handler.post(new Runnable(){ @Override public void run() { getListView().invalidateViews(); } }); try{Thread.sleep(1000); }catch(InterruptedException e){} } } }
|
- Androidプログラミング質問スレ revision42
598 :デフォルトの名無しさん[sage]:2014/05/06(火) 02:48:02.10 ID:ev7B1aK7 - 1秒おきに、A0,A1,A2,A3と、リストに表示されますが、
リストに表示されてる途中で、リストをタップすると、 エラーになることがあります。 エラーログには、UIなんたらと出てますが、処理的に足りないところとかありますか?
|
- Androidプログラミング質問スレ revision42
605 :デフォルトの名無しさん[sage]:2014/05/06(火) 09:40:50.21 ID:ev7B1aK7 - 答えを聞きにきたのに、答えがわからないからって、
質問者に逆ギレするのはよくないよね。 「仕様だから」と言った方がスマートだよ。
|
- Androidプログラミング質問スレ revision42
618 :デフォルトの名無しさん[sage]:2014/05/06(火) 11:12:43.93 ID:ev7B1aK7 - >>614
質問者は、そのような抽象的な答えは求めておりません。 コミュ障害ですか?
|
- Androidプログラミング質問スレ revision42
621 :デフォルトの名無しさん[sage]:2014/05/06(火) 11:30:04.97 ID:ev7B1aK7 - >>620
for文を使ったらキューが溜まるからダメだとか、 そういう具体性の伴った回答を質問者は求めているわけです。 貴方こそ、知識が無いのに知ったかぶろうとしてもダメですよ。 こちらは初心者といえども、相手がどの程度のレベルの人かくらいは見抜けますからね。
|
- Androidプログラミング質問スレ revision42
626 :デフォルトの名無しさん[sage]:2014/05/06(火) 12:30:07.40 ID:ev7B1aK7 - エラーログエラーログって、こちらは、元ソースを全部提示してるのだから、
自分のeclipseに貼り付けて実験してみればいいじゃない。
|
- Androidプログラミング質問スレ revision42
631 :デフォルトの名無しさん[sage]:2014/05/06(火) 12:44:44.62 ID:ev7B1aK7 - >>630
ほんと悪いけど、あなたの知能レベルも、俺とかわらんと思うよ。 明快な答えや、エラーの原因が思い当たるのならば、 自分の優位性をほのめかすために、 一言二言、具体性のあるヒントやキーワードを口走るものだけど、 あなたの長文には一切無いものね。
|
- Androidプログラミング質問スレ revision42
637 :デフォルトの名無しさん[sage]:2014/05/06(火) 12:55:22.18 ID:ev7B1aK7 - >>634
無意味じゃないよ。 そういう挙動を調べるだけで、何か新しいアプリやゲームのヒントになるし。 「1秒おきにリストに要素が追加されていくコードを書きなさい」という課題が出されたら、 その課題はおかしいとか文句言うの? それ以前に、慣れた人なら、こういうコードを書けばいい、こういうコードを書いたらダメだな、と、 瞬時に閃くものだと思うけど。
|
- Androidプログラミング質問スレ revision42
640 :デフォルトの名無しさん[sage]:2014/05/06(火) 13:05:01.46 ID:ev7B1aK7 - >>638
>>595に元ソースを貼ってますので。 まさか、こんなに情報を揃えてるのに、 まだ質問者の情報が足りないなどと言わないでしょうね?
|
- Androidプログラミング質問スレ revision42
653 :デフォルトの名無しさん[sage]:2014/05/06(火) 13:44:48.96 ID:ev7B1aK7 - >>648
やってみます。 エラーの起きる頻度にばらつきがあるので、エラーが出ないときは全然出ないし、 出るときは頻繁に出るので困ります。 エラーログにしても、いつものUIなんちゃらエラーの定型文なんで、 そこから原因がわかる人がいたら尊敬しますよ。
|
- Androidプログラミング質問スレ revision42
659 :デフォルトの名無しさん[sage]:2014/05/06(火) 14:10:21.50 ID:ev7B1aK7 - >>653
はい。 >>648 ご指摘のようにしたら、エラーが出なくなったような感じはします。 修正前のエラーログは下記 05-06 14:04:47.517: W/dalvikvm(2359): threadid=1: thread exiting with uncaught exception (group=0x40015560) 05-06 14:04:47.526: E/AndroidRuntime(2359): FATAL EXCEPTION: main 05-06 14:04:47.526: E/AndroidRuntime(2359): java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131230720, class android.widget.ListView) with Adapter(class android.widget.HeaderViewListAdapter)]
|
- Androidプログラミング質問スレ revision42
661 :デフォルトの名無しさん[sage]:2014/05/06(火) 14:12:28.06 ID:ev7B1aK7 - 05-06 14:04:47.526: E/AndroidRuntime(2359): at android.widget.ListView.layoutChildren(ListView.java:1510)
05-06 14:04:47.526: E/AndroidRuntime(2359): at android.widget.AbsListView$CheckForTap.run(AbsListView.java:2000) 05-06 14:04:47.526: E/AndroidRuntime(2359): at android.os.Handler.handleCallback(Handler.java:587) 05-06 14:04:47.526: E/AndroidRuntime(2359): at android.os.Handler.dispatchMessage(Handler.java:92) 05-06 14:04:47.526: E/AndroidRuntime(2359): at android.os.Looper.loop(Looper.java:123) 05-06 14:04:47.526: E/AndroidRuntime(2359): at android.app.ActivityThread.main(ActivityThread.java:3683) 05-06 14:04:47.526: E/AndroidRuntime(2359): at java.lang.reflect.Method.invokeNative(Native Method) 05-06 14:04:47.526: E/AndroidRuntime(2359): at java.lang.reflect.Method.invoke(Method.java:507) 05-06 14:04:47.526: E/AndroidRuntime(2359): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 05-06 14:04:47.526: E/AndroidRuntime(2359): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 05-06 14:04:47.526: E/AndroidRuntime(2359): at dalvik.system.NativeStart.main(Native Method)
|
- Androidプログラミング質問スレ revision42
663 :デフォルトの名無しさん[sage]:2014/05/06(火) 14:19:17.13 ID:ev7B1aK7 - >>662
人に教えるほどの知識が無いなら黙っていればいいじゃない?
|
- Androidプログラミング質問スレ revision42
665 :デフォルトの名無しさん[sage]:2014/05/06(火) 14:25:14.18 ID:ev7B1aK7 - >>664
あなたは、エラーログからどんな原因が読み取れましたか? 聞かせていただきたいですなあ。
|
- Androidプログラミング質問スレ revision42
672 :デフォルトの名無しさん[sage]:2014/05/06(火) 15:05:12.53 ID:ev7B1aK7 - >>666
ありがとうございます。 なるほど、AdapterとListViewの同期が取れてないときにエラーが出るわけですね? そうすると、>>648の方法も、正解をいただいたわけでありがとうございます。 >>669 そのような偉そうな事を言えるのなら、 最初のコードから指摘できたはずですよね? 後出しじゃんけんはみっともないよ。
|
- Androidプログラミング質問スレ revision42
681 :デフォルトの名無しさん[sage]:2014/05/06(火) 15:27:51.02 ID:ev7B1aK7 - >>677
Thread 〜Runnableで囲めば、別スレッドからUIに描画できるものと無条件で思ってましたからね。 UIなんちゃらのエラーも、同期が取れてないのは当たり前と考えてたので、 無意味なメッセージと思ってましたが、 ListViewは、追加されたリスト数と描画されるリスト数の同期が必要だということがわかっただけ収穫ですよ。 さて、「どうやったら同期がとれますか?」という方法ですが、 >>648の方法が有効だと思えばそうしますし、またエラーが出るようなら、対処を考えます。 いまのところ、100個リストしてもエラーは出てないということをご報告申し上げます。
|
- Androidプログラミング質問スレ revision42
686 :デフォルトの名無しさん[sage]:2014/05/06(火) 16:09:06.14 ID:ev7B1aK7 - 君たちの中で、何人が、
「AdapterとListViewのリスト数の同期が必要」と、明確に理解してたの? 俺が質問をぶつけなかったら、曖昧なままだったろ? 実際、「Adapter ListView 同期 エラー」でググっても、 それらしい解説をしたブログは引っかからないしな。
|