折りたたみできるコントロール

474 views
Skip to first unread message

ボビン

unread,
Nov 2, 2010, 6:24:44 AM11/2/10
to 日本Androidの会
こんにちは、ボビンと申します。

Android1.6で開発していまして、次のような画面を作成しました。
かっこ内はコントロールの種類です。

1)仕事関係(TextView)
住所(EditText)
氏名(EditText)
性別(CheckBox)

2)プライベート(TextView)
住所(EditText)
氏名(EditText)
性別(CheckBox)

3)学校関係(TextView)
住所(EditText)
氏名(EditText)
性別(CheckBox)

4)以降も、10)まで続く・・・

このような「1)仕事関係、2)プライベート」等のカテゴリが多数あります。
常に表示させると、かなり縦長の画面になります。
これを次のように折りたたみ、カテゴリ名の部分をタップしたら、
折りたたみが開閉するような事が可能ですと、
すっきりとしたアプリになるのですが実現は可能でしょうか?

1)仕事関係(TextView)
2)プライベート(TextView) ←閉じた状態
3)学校関係(TextView)
4)・・・

例えば上記の「2)プライベート」をタップした場合

1)仕事関係(TextView)
2)プライベート(TextView) ←開いた状態
住所(EditText)
氏名(EditText)
性別(CheckBox)

3)学校関係(TextView)
4)・・・

お手数ですが詳しい方がいらっしゃいましたら、教えて下さい。
よろしくお願いします。

mosaki4

unread,
Nov 2, 2010, 9:54:14 AM11/2/10
to android-g...@googlegroups.com
大崎といいます

ListViewを継承してカスタマイズすれば可能と思いますが
普通の使い方に比べて難易度が高そうです
デザインや使い方が変わってもよいなら下記の方法はどうでしょうか?

 案1.上部にSpinner(カテゴリ名)、下部にListView(内容)を表示する構成
 案2.ListView2画面を使う構成、最初の画面にカテゴリ名、2番目の画面に内容


2010年11月2日19:24 ボビン <junichi...@gmail.com>:

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。


yokmama

unread,
Nov 2, 2010, 10:12:09 AM11/2/10
to android-g...@googlegroups.com
夜子ままです

なんとなく ExpandableListView で出来そうな気がするけど、なにか問題がありましたか?

2010年11月2日19:24 ボビン <junichi...@gmail.com>:

野口一也

unread,
Nov 2, 2010, 10:15:26 AM11/2/10
to android-g...@googlegroups.com
カズヤです。

ExpandableListViewのことですか?

(2010/11/02 22:54), mosaki4 wrote:
> 大崎といいます
>
> ListViewを継承してカスタマイズすれば可能と思いますが
> 普通の使い方に比べて難易度が高そうです
> デザインや使い方が変わってもよいなら下記の方法はどうでしょうか?
>
>  案1.上部にSpinner(カテゴリ名)、下部にListView(内容)を表示する構成
>  案2.ListView2画面を使う構成、最初の画面にカテゴリ名、2番目の画面に内容
>
>
> 2010年11月2日19:24 ボビン <junichi...@gmail.com

> <mailto:junichi...@gmail.com>>:

> <mailto:android-g...@googlegroups.com> にメールを送信してくだ
> さい。
> このグループから退会するには、android-group-
> japan+un...@googlegroups.com
> <mailto:android-group-japan%2Bunsu...@googlegroups.com> にメール
> を送信してください。
> 詳細については、http://groups.google.com/group/android-group-
> japan?hl=ja からこのグループにアクセスしてください。


>
>
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送ら
> れています。
> このグループに投稿するには、android-g...@googlegroups.com にメー
> ルを送信してください。
> このグループから退会するには、android-group-

> japan+un...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。

inoaki

unread,
Nov 2, 2010, 10:04:01 AM11/2/10
to 日本Androidの会
こんにちは、井上といいます。

ExpandableListViewはいかがでしょうか。
こちらのブログがすごく分かりやすいです。
http://y-anz-m.blogspot.com/2010/08/androidexandable-list-view.html

ボビン

unread,
Nov 3, 2010, 9:11:36 AM11/3/10
to 日本Androidの会
大崎さん、夜子ままさん、カズヤさん、井上さん

こんにちは、ボビンです。
お返事ありがとうございます。

ExpandableListViewを使えば実現できそうです。
このコントロールを知りませんでしたので助かりました。

教えていただいたブログを見て実装してみます。
また結果を報告します。

ありがとうございました。

ボビン

unread,
Nov 3, 2010, 8:33:08 PM11/3/10
to 日本Androidの会
こんにちは、ボビンです。
ExpandableListViewで実現できました。
とても助かりました。
ありがとうございました。

anzai...@gmail.com

unread,
Nov 3, 2010, 8:57:24 PM11/3/10
to android-g...@googlegroups.com
あんざいです。

 ブログ作者です。
 参考になってよかったです。
 ついでですが、 adapter についてまとめたエントリが
 あるので、よかったらどうぞ http://y-anz-m.blogspot.com/2010/11/androidadapter-listview.html




ボビン <junichi...@gmail.com>:
> --
>
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
>
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
>
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
>
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>
>
>

ボビン

unread,
Nov 4, 2010, 1:34:43 AM11/4/10
to 日本Androidの会
あんざいさん

こんにちは、ボビンです。
とても勉強になるブログを運営していただき、ありがとうございます。

>adapter についてまとめたエントリが あるので、
こちら拝見しました。まとまっていてとてもわかりやすかったです。
初心者なのでありがたいです。

そして今回実現したい内容は、上記の記事などから、
BaseExpandableListAdapterを利用するのだな、
ということで、以下の記事を読ませていただき、動作させてみようとしています。

http://y-anz-m.blogspot.com/2010/08/androidexpandable-list.html

ところが知識不足で、もう少しだと思うのですが、動作させることができません。
エラー内容から、onCreateの中の「setContentView(R.layout.mybooklist_layout);」
が怪しいと思うのです。(mybooklist_layout.xmlを自分で用意したので)

次のmybooklist_layout.xmlではダメでしょうか?
恐れ入りますが教えていただけると幸いです。


◆自分で作成したmybooklist_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<ListView android:id="@id/android:list"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ListView>

</LinearLayout>


ちなみにエラー内容は以下の通りです。
11-04 14:11:22.771: ERROR/AndroidRuntime(10201):
java.lang.RuntimeException: Unable to start activity
ComponentInfo{sgs.co.jp/sgs.co.jp.ExpandableListTest2}:
java.lang.ClassCastException: android.widget.ListView

よろしくお願いします。


On 11月4日, 午前9:57, anzai.y...@gmail.com wrote:
> あんざいです。
>
> ブログ作者です。
> 参考になってよかったです。
> ついでですが、 adapter についてまとめたエントリが あるので、よかったらどう
> ぞhttp://y-anz-m.blogspot.com/2010/11/androidadapter-listview.html
>
> ボビン <junichi.yana...@gmail.com>:
> > このグループに投稿するには、android-g...@googlegroups.com にメール
> > を送信してください。
> > このグループから退会するには、
> > android-group-j...@googlegroups.com にメールを送信してくださ
> > い。
> > 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> > からこのグループにアクセスしてください。

ボビン

unread,
Nov 4, 2010, 2:09:32 AM11/4/10
to 日本Androidの会
こんにちは、ボビンです。
先ほどのエラーですが、ブログの中で
>参考にしたのが、ApiDemo の ExpandableList1.java です。
とありましたので、ExpandableList1.javaを改造して
getChildViewにてボタン、EditTextを返すようにすることができました。

これでOK!・・・と思ったのですが、EditTextに値を入力しても画面上で反映されません。
画面が更新されているような感じで入力してもクリアされてしまいます。

getChildViewは以下のようにしています。
特にエラーも出ていないようなので、何かが抜けていると思うのですが・・・
おわかりになる方がおられたら、お手数ですが教えて下さい。
よろしくお願いします。


public View getChildView(int groupPosition, int childPosition,
boolean isLastChild,
View convertView, ViewGroup parent) {

// 最後の行は LinearLyout + Button を返す
if(childPosition == getChildrenCount(groupPosition) - 1) {
AbsListView.LayoutParams lp = new
AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 100);
AbsListView.LayoutParams lp2 = new
AbsListView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
AbsListView.LayoutParams lp3 =
new
AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);

LinearLayout ll = new
LinearLayout(ExpandableList1.this);
ll.setLayoutParams(lp);
ll.setPadding(50, 0, 0, 0);
ll.setGravity(Gravity.CENTER_VERTICAL |
Gravity.LEFT);

Button button = new Button(ExpandableList1.this);
button.setText("ボタン");
button.setLayoutParams(lp2);
ll.addView(button);

EditText edit = new EditText(ExpandableList1.this);
edit.setLayoutParams(lp3);
ll.addView(edit);

return ll;

}
else {
TextView textView = getGenericView();
textView.setText(getChild(groupPosition,
childPosition).toString());
return textView;

あんざいゆき

unread,
Nov 4, 2010, 3:59:51 AM11/4/10
to android-g...@googlegroups.com
ボビンさん

> これでOK!・・・と思ったのですが、EditTextに値を入力しても画面上で反映されません。
> 画面が更新されているような感じで入力してもクリアされてしまいます。

Group を開閉したら入力が消えるということですか?
それとも、フォーカスを合わせて IME がでても入力できない
ということですか?

あんざい


2010年11月4日15:09 ボビン <junichi...@gmail.com>:
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。




--
あんざい ゆき
anzai...@gmail.com
twitter : @yanzm

ボビン

unread,
Nov 4, 2010, 4:29:34 AM11/4/10
to 日本Androidの会
あんざいさん

お返事ありがとうございます。

> Group を開閉したら入力が消えるということですか?
> それとも、フォーカスを合わせて IME がでても入力できない
> ということですか?

Groupを開き、EditTextへフォーカスを合わせるとキーボードが出ます。
そのまま「あ」等と入力しますと、
次の瞬間、画面が更新されたようになり、入力内容がセットされていない状態となります。
フォーカスもEditTextからは外れます。が、キーボードは出たままの状態です。
(ただし日本語入力ではない、左下のボタン「Aa」が選択された状態のキーボードに変更されます)
Groupは開いたままの状態です。

何かお気づきの点ありますでしょうか?
よろしくお願いします。

On 11月4日, 午後4:59, あんざいゆき <anzai.y...@gmail.com> wrote:
> ボビンさん
>
> > これでOK!・・・と思ったのですが、EditTextに値を入力しても画面上で反映されません。
> > 画面が更新されているような感じで入力してもクリアされてしまいます。
>
> Group を開閉したら入力が消えるということですか?
> それとも、フォーカスを合わせて IME がでても入力できない
> ということですか?
>
> あんざい
>
> 2010年11月4日15:09 ボビン <junichi.yana...@gmail.com>:
> > > > > android-group-j...@googlegroups.com<android-group-japan%2Bunsu...@googlegroups.com>にメールを送信してくださ
> > > > > い。
> > > > > 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> > > > > からこのグループにアクセスしてください。
>
> > --
> > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> > このグループから退会するには、android-group-j...@googlegroups.com<android-group-japan%2Bunsu...@googlegroups.com>にメールを送信してください。
> > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。
>
> --
> あんざい ゆき...
>
> もっと読む ≫

あんざいゆき

unread,
Nov 4, 2010, 12:46:23 PM11/4/10
to android-g...@googlegroups.com
ボビンさん

 あんざいです。
 
 メールで書くと長くなりそうだったので、ブログに書きました。

 で、結局普通に LinearLayout で実装したほうが簡単でした。

 ではでは。



2010年11月4日17:29 ボビン <junichi...@gmail.com>:
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。




--

yokmama

unread,
Nov 4, 2010, 12:58:46 PM11/4/10
to android-g...@googlegroups.com
夜子ままです

なるほど、たしかにListViewとかでレイアウトにEditTextをいれるとソフトキーボードが
干渉してgetViewが何度もとんでくる現象で苦労した記憶を思い出しました。

そのときの対応は、編集ボタンをTextViewのとなりにおいてダイアログで編集項目を
入力するようにしました。

ほかにもっとスマートな方法があるかもしれませんね。

2010年11月5日1:46 あんざいゆき <anzai...@gmail.com>:
Message has been deleted

ボビン

unread,
Nov 4, 2010, 8:57:45 PM11/4/10
to 日本Androidの会
あんざいさん、夜子ままさん

こんにちは、ボビンです。
ブログにサンプルまで記載していただき、ありがとうございます。

なるほど、getViewが何度も呼ばれてしまうので入力内容が反映されなかったのですね。
ブログを読ませていただき、2つ目の
「Android 普通の LinearLayout で ExpandableListView っぽいのをつくる 」
のサンプルを動作させてみました。
こちらのサンプルを改造することで、やりたい事がばっちり実現できそうです。

実装はこれからですが、1人では到底解決できなかったと思います。
本当にありがとうございました。



On 11月5日, 午前1:46, あんざいゆき <anzai.y...@gmail.com> wrote:
> ボビンさん
>
> あんざいです。
> メールで書くと長くなりそうだったので、ブログに書きました。
> Android ExpandableListView の子要素に EditText
> を入れるといろいろめんどい<http://y-anz-m.blogspot.com/2010/11/androidexpandablelistview-edittex...>
>
> で、結局普通に LinearLayout で実装したほうが簡単でした。
> Android 普通の LinearLayout で ExpandableListView
> っぽいのをつくる<http://y-anz-m.blogspot.com/2010/11/android-linearlayout-expandableli...>
>
> ではでは。
>
> 2010年11月4日17:29 ボビン <junichi.yana...@gmail.com>:
> ...
>
> もっと読む ≫
Message has been deleted

ボビン

unread,
Nov 5, 2010, 12:48:41 AM11/5/10
to 日本Androidの会
こんにちは、ボビンです

実装が完了しました。
ずらーっと長い画面がとてもすっきり格好良くなりました。
あらためて、ありがとうございました。
> ...
>
> もっと読む ≫
Reply all
Reply to author
Forward
0 new messages