Java 读取存储在对象中并显示在可展开列表视图中的数据
在我的Android应用程序中,我解析了XML文件中的数据,并将它们放在某个对象中,现在我必须读取这些数据并将其显示在可扩展的列表视图中。我知道如何在可展开的列表视图中显示数据:我需要一个适配器,但要使用适配器,我首先需要存储在对象中的数据,因此如何从对象中读取数据 编辑:在这里你可以看到我的适配器应该是怎样的 Myadapter.javaJava 读取存储在对象中并显示在可展开列表视图中的数据,java,android,expandablelistview,Java,Android,Expandablelistview,在我的Android应用程序中,我解析了XML文件中的数据,并将它们放在某个对象中,现在我必须读取这些数据并将其显示在可扩展的列表视图中。我知道如何在可展开的列表视图中显示数据:我需要一个适配器,但要使用适配器,我首先需要存储在对象中的数据,因此如何从对象中读取数据 编辑:在这里你可以看到我的适配器应该是怎样的 Myadapter.java package it.lucgian84.adapter; import it.lucgian84.models.Episode; import it.l
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()方法时,此处理程序将向活动返回新列表。。。我需要从对象中读取信息并插入到程序列表中。我将在活动中这样做,事实上,您可以看到在我的适配器中有一个构造函数。你能帮我从对象中读取信息并插入程序列表吗?非常感谢。