0

私の Android アプリでは、XML ファイルからデータを解析し、それらを何らかのオブジェクトに配置しました。このデータを読み取って、展開可能なリスト ビューに表示する必要があります。展開可能なリスト ビューでデータを表示する方法を知っています。アダプターが必要ですが、アダプターを使用するには、まずオブジェクトに保存したデータが必要です。オブジェクトからデータを読み取るにはどうすればよいでしょうか?

編集:ここで、私のアダプターがどうあるべきかを見ることができます。

Myadapter.java

package it.lucgian84.adapter;

import it.lucgian84.models.Episode;
import it.lucgian84.models.Program;
import it.lucgian84.models.Programs;

import java.util.ArrayList;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;

public class Myadapter extends BaseExpandableListAdapter {

    private Context context;
    private ArrayList<Program> programList;

    public Myadapter(Context context, ArrayList<Program> programList) {
        this.context = context;
        this.programList = programList;
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        Episode[] episodeList = programList.get(groupPosition).getEpisodes();
        return episodeList.length;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, 
               View view, ViewGroup parent) {
        return null;
    }

    @Override
    public int getChildrenCount(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public Object getGroup(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public int getGroupCount() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public long getGroupId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getGroupView(int arg0, boolean arg1, View arg2, ViewGroup arg3) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public boolean hasStableIds() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean isChildSelectable(int arg0, int arg1) {
        // TODO Auto-generated method stub
        return false;
    }

}

したがって、Activity では、アダプターで使用する ArrayList programList を設定する必要があります。programList を生成するには、オブジェクトから情報を読み取る必要があります。どのように programList を生成できますか?

ありがとうございました

4

2 に答える 2

0

それを行うためのいくつかの可能な代替手段があります。静的フィールドにデータを保持する静的クラスを作成できます。次に、この静的クラスを介して、アダプターでこのオブジェクトにアクセスできます。アダプター クラスで、このタイプのオブジェクトのパラメーターを定義することもできます。したがって、アダプターのインスタンスを作成すると、特定のオブジェクトでインスタンス化できます。

これで、アダプタ内のオブジェクトにアクセスし、リスト ビューでその情報を使用できるようになりました

擬似コード:

public MyAdapter extends BaseAdapter(){
   public MyAdapter(Object myObject){
        this.object = myObject;
   }
   //handleMethods
}

それが役立つことを願っています

乾杯

于 2013-07-26T10:53:38.017 に答える
0

これを試してください:

class Myadapter extends BaseExpandableListAdapter {


     private Context contProgram     
     private ArrayList<Program> programList;

        public Myadapter(Context context, ArrayList<Program> programList) {
            this.context = context;
            this.programList = programList;
        }

    @Override
    public Object getChild(int arg0, int arg1) {
        return null;
    }

    @Override
    public long getChildId(int arg0, int arg1) {
        return 0;
    }

    @Override
    public View getChildView(int arg0, int arg1, boolean arg2, View arg3, ViewGroup arg4) {

        Episode program = programList.get(arg0).getEpisodes().get(arg1);
         //your child view inflate from xml or add programatically
        return null;
    }

    @Override
    public int getChildrenCount(int arg0) {
        return programList.get(arg0).getEpisodes().lenth;
    }

    @Override
    public Object getGroup(int arg0) {
        return programList.size();
    }

    @Override
    public int getGroupCount() {
        return 0;
    }

    @Override
    public long getGroupId(int arg0) {
        return 0;
    }

    @Override
    public View getGroupView(int arg0, boolean arg1, View arg2, ViewGroup arg3) {
        Program program =  programList.get(arg0);
        //your group view inflate from xml or add programatically
        return null;
    }

    @Override
    public boolean hasStableIds() {
        return false;
    }

    @Override
    public boolean isChildSelectable(int arg0, int arg1) {
        // TODO Auto-generated method stub
        return false;
    }

}
于 2013-07-26T11:28:27.067 に答える