2013-08-21 11 views
5

SimpleExpandableListAdapterExpandableListViewを作成しようとしています(私は新しいアダプタを自分で拡張できますが、simpleExapndableListAdapterを試してみたいと思います)。組織化されたSimpleExpandableListAdapterのデータはどうすればいいですか

今、SimpleExpandableListAdapterという新しいインスタンスを作成しようとすると問題が発生します。

イベント私はreferencesを読んでいますが、パラメータが何を意味するのかがよく分かりません。特にgroupDatachildDataです。

Mapのリストとlist of Mapのリストを作成する必要があることは分かりますが、どのデータをそこに置く必要がありますか?それらを整理する方法?

たとえば、これは表示したいデータです。どのように整理するのですか?

++Development Team 
    John 
    Bill 
++Data Process Team 
    Alice 
    David 

私は、グループと子ビューの2つのレイアウトを作成する必要がありますか?

私はグーグルでチュートリアルを何度も読んだことがありますが、私はそれを理解できません。

私は誰かが説明を与えることを望みます。

答えて

7

あなたの望む簡単なサンプルですが、あなたの疑問をすべてクリアします。

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

import android.app.ExpandableListActivity; 
import android.os.Bundle; 
import android.widget.ExpandableListAdapter; 
import android.widget.SimpleExpandableListAdapter; 

public class SimpleExpandableListExampleActivity extends ExpandableListActivity { 
    private static final String NAME = "NAME"; 

    private ExpandableListAdapter mAdapter; 

    private String group[] = {"Development" , "Data Process Team"}; 
    private String[][] child = { { "John", "Bill" }, { "Alice", "David" } }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     List<Map<String, String>> groupData = new ArrayList<Map<String, String>>(); 
     List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>(); 
     for (int i = 0; i < group.length; i++) { 
      Map<String, String> curGroupMap = new HashMap<String, String>(); 
      groupData.add(curGroupMap); 
      curGroupMap.put(NAME, group[i]); 

      List<Map<String, String>> children = new ArrayList<Map<String, String>>(); 
      for (int j = 0; j < child[i].length; j++) { 
       Map<String, String> curChildMap = new HashMap<String, String>(); 
       children.add(curChildMap); 
       curChildMap.put(NAME, child[i][j]); 
      } 
      childData.add(children); 
     } 

     // Set up our adapter 
     mAdapter = new SimpleExpandableListAdapter(this, groupData, 
       android.R.layout.simple_expandable_list_item_1, 
       new String[] { NAME }, new int[] { android.R.id.text1 }, 
       childData, android.R.layout.simple_expandable_list_item_2, 
       new String[] { NAME }, new int[] { android.R.id.text1 }); 
     setListAdapter(mAdapter); 
    } 

} 

あなたがしなければならないのは、そのアクティビティに指定されたコードをコピー&ペースト

  • ..あなたの主な活動 としてSimpleExpandableListExampleActivityでのAndroidプロジェクトを作成します

    • です。親リストは定期的に1であること厥
    • ...あなたのコードを実行します...

    ホープ、このことができます...

  • +1

    これは機能します。しかし、どのようにキーのNAMEを知っているのですか?R.id.text1などのIDをどうやって知っていますか?ところで、私は、インジケータがテキストと揃っていないことを発見しました。それを調整する考えはありますか?これを見てください:http://i.imgur.com/aeznDf7.png – hguser

    +0

    あなたは 'android.R.'が使われていることに気付きましたか?それは私がAndroidを提供するレイアウトを使用したことを意味します、私はそれを作成していません...あなたはそれは何ですか** Ctrl + android.R.layout.simple_expandable_list_item_1 **を押すとText1という名前のテキストが存在することがわかります...テキストとインジケータのアライメントが関係している限り、あなたはテストしていますかエミュレータでは??、もしあれば、私はここにはいません...)、実際のデバイスをチェックしてください。 – CRUSADER

    0

    あなたの要件には文字通り多くの例があります。

    とにかく、もしあなたが既にそうでなければ、このブログを調べることができます。

    http://www.coderzheaven.com/2011/04/10/expandable-listview-in-android-using-simpleexpandablelistadapter-a-simple-example/

    「それは、私は2つのグループのレイアウトと子ビューを作成するために持っていることを意味しますか?」

    もちろん、はい!レイアウトを作成しないことを選択することができますが、再度選択することができます。これはExpandableListとはあまり関係がありません。

    GroupListには理想的にはチームのリストが含まれていますline list = {"開発チーム"、 "データプロセスチーム」}(これは主にのみ等リストの高さを計算するように、表示目的のために使用されます)

    たchildListは、理想的にはリストのリストを含むであろう(むしろリストのハッシュマップ)

    ハッシュマップ> =

    開発チーム: リスト= {"John"、 "Bill"} データ処理チーム: リスト= {"John"、 "Bill"}

    0

    2つのリストまたは配列が必要です。

    (DEV。チームとデータ処理チーム)

    親リストは定期的に一つであり、あなたはすなわち、トップレベルの項目すべての親を追加する必要があります。

    Childrean

    親と子供のリストとの主な違いは、子どもたちのリストは、リストのリストであるということです。あなたが親の子どもたちが必要な場合

    だから例えば、あなたは、この

    children.get(parentPosition) 
    

    ような何かをし、あなたが特定の子

    children.get(parentPosition).get(childPosition) 
    

    Hereが必要な場合は、BaseExpandableListAdapterを使った例を見つけることができます

    +0

    は '、あなたはすべての親に、すなわちトップレベルのitems'を追加する必要があります。私はちょうどマップのリストなぜですか?なぜ文字列のリストを使用しないのですか? 'Groups = new ArrayList (); groups.add(" group1 ")?' – hguser

    +0

    'BaseExpandableListAdapter'を拡張すると、どんな種類のオブジェクトでも' ArrayList'を使うことができます。 Android開発者が 'SimpleExpandableListAdapter'に' Map'を使用している理由はありません – Axxiss

    +0

    最初の 'children.get(parentPosition)'は 'parent.get(parentPosition)'でしょうか? – hguser

    関連する問題