Java 读取存储在对象中并显示在可展开列表视图中的数据

Java 读取存储在对象中并显示在可展开列表视图中的数据,java,android,expandablelistview,Java,Android,Expandablelistview,在我的Android应用程序中,我解析了XML文件中的数据,并将它们放在某个对象中,现在我必须读取这些数据并将其显示在可扩展的列表视图中。我知道如何在可展开的列表视图中显示数据:我需要一个适配器,但要使用适配器,我首先需要存储在对象中的数据,因此如何从对象中读取数据 编辑:在这里你可以看到我的适配器应该是怎样的 Myadapter.java package it.lucgian84.adapter; import it.lucgian84.models.Episode; import it.l

在我的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;
    }

}
package it.lucgian84.adapter;
导入it.lucgian84.models.eption;
导入it.lucgian84.models.Program;
导入it.lucgian84.models.Programs;
导入java.util.ArrayList;
导入android.content.Context;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseExpandableListAdapter;
公共类Myadapter扩展了BaseExpandableListAdapter{
私人语境;
私有ArrayList程序列表;
公共Myadapter(上下文上下文,ArrayList程序列表){
this.context=上下文;
this.programList=程序列表;
}
@凌驾
公共对象getChild(int-groupPosition,int-childPosition){
插曲[]插曲列表=程序列表.get(groupPosition).getSpices();
返回eposodelist.length;
}
@凌驾
公共长getChildId(int-groupPosition,int-childPosition){
返回子位置;
}
@凌驾
公共视图getChildView(int-groupPosition、int-childPosition、boolean-isLastChild、,
视图、视图组(父视图){
返回null;
}
@凌驾
公共整数getChildrenCount(整数arg0){
//TODO自动生成的方法存根
返回0;
}
@凌驾
公共对象getGroup(int arg0){
//TODO自动生成的方法存根
返回null;
}
@凌驾
public int getGroupCount(){
//TODO自动生成的方法存根
返回0;
}
@凌驾
公共长getGroupId(int arg0){
//TODO自动生成的方法存根
返回0;
}
@凌驾
公共视图getGroupView(整数arg0、布尔值arg1、视图arg2、视图组arg3){
//TODO自动生成的方法存根
返回null;
}
@凌驾
公共布尔表ID(){
//TODO自动生成的方法存根
返回false;
}
@凌驾
公共布尔值isChildSelectable(int arg0,int arg1){
//TODO自动生成的方法存根
返回false;
}
}
因此,在活动中,我应该填充ArrayList programList以在适配器中使用。要填充programList,我需要从对象中读取信息,如何填充programList


谢谢

这样做有一些可能的替代方法。 您可以创建一个静态类,将数据保存在staic字段中。然后,您可以通过这个静态类在适配器中访问这个对象。 您还可以在适配器类中为这种类型的对象定义一个参数。因此,如果创建适配器的实例,可以将其与特定对象关联

现在,您可以访问适配器中的对象,并在列表视图中使用它们的信息

伪代码:

public MyAdapter extends BaseAdapter(){
   public MyAdapter(Object myObject){
        this.object = myObject;
   }
   //handleMethods
}
希望有帮助

干杯

试试这个:

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;
    }

}
Myadapter类扩展了BaseExpandableListAdapter{ 专用上下文控制程序 私有ArrayList程序列表; 公共Myadapter(上下文上下文,ArrayList程序列表){ this.context=上下文; this.programList=程序列表; } @凌驾 公共对象getChild(int arg0,int arg1){ 返回null; } @凌驾 公共长getChildId(int arg0,int arg1){ 返回0; } @凌驾 公共视图getChildView(int arg0、int arg1、布尔值arg2、视图arg3、视图组arg4){ 插曲程序=programList.get(arg0.getscents().get(arg1); //您的子视图从xml膨胀或以编程方式添加 返回null; } @凌驾 公共整数getChildrenCount(整数arg0){ 返回programList.get(arg0.getSections().lenth; } @凌驾 公共对象getGroup(int arg0){ 返回programList.size(); } @凌驾 public int getGroupCount(){ 返回0; } @凌驾 公共长getGroupId(int arg0){ 返回0; } @凌驾 公共视图getGroupView(整数arg0、布尔值arg1、视图arg2、视图组arg3){ Program=programList.get(arg0); //您的组视图可以从xml膨胀或通过编程方式添加 返回null; } @凌驾 公共布尔表ID(){ 返回false; } @凌驾 公共布尔值isChildSelectable(int arg0,int arg1){ //TODO自动生成的方法存根 返回false; } }
。您想将数据放入ArrayList还是什么意思?然后必须创建一个方法,首先在适配器中返回列表。在使用适配器的activity类中,实例化它并设置视图的处理程序。然后可以在处理程序中更新列表的数据。当活动调用Tue getList()方法时,此处理程序将向活动返回新列表。。。我需要从对象中读取信息并插入到程序列表中。我将在活动中这样做,事实上,您可以看到在我的适配器中有一个构造函数。你能帮我从对象中读取信息并插入程序列表吗?非常感谢。