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

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

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

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

Android

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

Q&A

解決済

2回答

635閲覧

[Android]ExpandableListViewが表示されない

Rio12882

総合スコア27

Java

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

Android

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

0グッド

0クリップ

投稿2018/02/04 08:58

Androidアプリにて、ExpandableListViewを実装しようとしたのですが
エラーも吐かず、画面にViewが表示されないのでどこが間違っているか
ご指摘いただきたいです。

ListViewAdapterです。

public class ExpandableListViewAdapter extends BaseExpandableListAdapter { private final String TAG = this.getClass().getSimpleName(); private List<ExpandableListViewItem> children; private List<String> groups; private Context context; private LayoutInflater inflater; /** * Constructor */ public ExpandableListViewAdapter(Context ctx, List<String> groups, List<ExpandableListViewItem> children) { Log.d(TAG, "ExpandableListViewAdapter() start."); this.context = ctx; this.children = children; this.groups = groups; this.inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getGroupCount() { return 0; } @Override public int getChildrenCount(int groupPosition) { return 0; } @Override public Object getGroup(int groupPosition) { return groups.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return children.get(groupPosition); } @Override public long getGroupId(int groupPosition) { return groupPosition; } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public boolean hasStableIds() { return true; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { Log.d(TAG, "getGroupView() start."); if(convertView == null){ convertView = inflater.inflate(R.layout.expandable_list_view_group, null); } TextView textView = (TextView) convertView.findViewById(R.id.expandable_group_text); textView.setText(this.groups.get(groupPosition)); // textView.setText((String) getGroup(groupPosition)); return convertView; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { Log.d(TAG, "getChildView() start."); if(convertView == null){ convertView = inflater.inflate(R.layout.expandable_list_view_item, null); } final TextView textView = (TextView) convertView.findViewById( R.id.answer_text); // textView.setText(((ExpandableListViewItem) getChild(groupPosition, childPosition)).getText()); textView.setText(this.children.get(childPosition).getText()); return convertView; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return false; } }

ExpandableListVIewを実装しようとしているActivityです。

public class ListViewActivity extends AppCompatActivity { private final String TAG = this.getClass().getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { Log.d(TAG, "onCreate() start."); super.onCreate(savedInstanceState); setContentView(R.layout.activity_faq); ExpandableListView expandableListView = (ExpandableListView) findViewById(R.id.faq_expandableListView); ExpandableListViewAdapter expandableListViewAdapter = new ExpandableListViewAdapter(this, createGroupItemList(), createChildrenItemList()); expandableListView.setAdapter(expandableListViewAdapter); } private List<ExpandableListViewItem> createChildrenItemList() { List<ExpandableListViewItem> result = new ArrayList<>(); result.add(new ExpandableListViewItem("ねこ1")); result.add(new ExpandableListViewItem("ねこ2")); result.add(new ExpandableListViewItem("コーギー1")); result.add(new ExpandableListViewItem("コーギー2")); return result; } private List<String> createGroupItemList() { List<String> groups = new ArrayList<>(); groups.add("test 01"); groups.add("test 02"); groups.add("test 03"); groups.add("test 04"); return groups; } }

ListItemのクラスです。

public class ExpandableListViewItem { private String text = ""; public ExpandableListViewItem(String text) { this.text = text; } public String getText() { return text; } public void setText(String text) { this.text = text; } }

IDのずれや、Viewのサイズの問題で表示されてないということは確認したのでないと思います。
自分として、ログにて
・"ExpandableListViewAdapter() start."は一度呼ばれている。
・"getChildView() start."は、一度も呼ばれていない。
・"getGroupView() start."は、一度も呼ばれていない。
がみられるので、なぜgetView系が呼ばれないのかが理解できていないです。

どなたかご教授いただけませんでしょうか。
宜しくお願いいたします。

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

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

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

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

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

guest

回答2

0

ExpandableListViewAdapterの実装で、getGroupCount()とgetChildrenCount()の戻り値を0固定にしているからではないでしょうか。要素数0のリストですから、即ち白紙リストになってしまうのでしょう。下記2箇所の修正で改善しませんか。

Java

1 @Override 2 public int getGroupCount() { 3 return groups.size(); 4 } 5 6 @Override 7 public int getChildrenCount(int groupPosition) { 8 return children.size(); 9 } 10

ただし、これだと全ての子要素を同一内容にすることしかできません。もしここから、子要素ごとに数も内容も異なるものを表示するように改修するのならば、子要素の情報の持ち方を

Java

1 private List<List<ExpandableListViewItem>> children;

のような多次元リストにする必要があるでしょう。

投稿2018/02/12 06:16

keicha_hrs

総合スコア6768

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

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

0

ベストアンサー

getGroupCountやgetChildrenCountをしっかりと実装すると改善しませんか?

投稿2018/02/09 12:37

yona

総合スコア18155

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

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

Rio12882

2018/02/12 10:14

無事動きました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問