gpt4 book ai didi

Android 可扩展 ListView

转载 作者:搜寻专家 更新时间:2023-11-01 08:16:22 26 4
gpt4 key购买 nike

最近我在尝试使用 android 的可扩展 ListView ,所以我四处搜索并偶然发现了这个

http://about-android.blogspot.com/2010/04/steps-to-implement-expandablelistview.html

我几乎完全按照这些步骤操作,但我创建了一个文件来包含我自己的适配器的实现。基本上在我调用的主要 Activity 的 onCreate 方法上:

mEntries = findViewById(R.id.entries);    
ExpandableListAdapter adapter = new MyExpandableListAdapter(this);
mEntries.setAdapter(adapter);

这是代码(取自上面的 URL 并进行了修改):

import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;

public class MyExpandableListAdapter extends BaseExpandableListAdapter {
private String[] groups = {"Vehicle", "Baj"};
private String[][] children = {
{"Mol", "Mor"},
{"In", "Ruh"}
};

private Context cxt;

public MyExpandableListAdapter(Context cxt) {
this.cxt = cxt;
}

@Override
public Object getChild(int groupPos, int childPos) {
return children[groupPos][childPos];
}

@Override
public long getChildId(int groupPos, int childPos) {
return childPos;
}

@Override
public View getChildView(int groupPos, int childPos,
boolean isLastChild, View convertView, ViewGroup parent) {
TextView tv = getGenericView();
tv.setText(getChild(groupPos, childPos).toString());
return tv;
}

@Override
public int getChildrenCount(int groupPos) {
return children[groupPos].length;
}

@Override
public Object getGroup(int groupPos) {
return groups[groupPos];
}

@Override
public int getGroupCount() {
return groups.length;
}

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

public TextView getGenericView() {
// Layout parameters for the ExpandableListView
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, 64);

TextView tv = new TextView(this.cxt);
tv.setLayoutParams(lp);

// Center the text vertically
tv.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
// Set the text starting position
tv.setPadding(36, 0, 0, 0);
return tv;
}

@Override
public View getGroupView(int groupPos, boolean isExpanded, View convertView,
ViewGroup parent) {
TextView tv = getGenericView();
tv.setText(getGroup(groupPos).toString());
return null;
}

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

@Override
public boolean isChildSelectable(int groupPos, int childPos) {
return true;
}

}

logcat 吐出这些:

12-01 22:24:54.883: ERROR/AndroidRuntime(14424): java.lang.NullPointerException
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.widget.AbsListView.obtainView(AbsListView.java:1276)
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.widget.ListView.makeAndAddView(ListView.java:1668)
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.widget.ListView.fillDown(ListView.java:637)
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.widget.ListView.fillFromTop(ListView.java:694)
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.widget.ListView.layoutChildren(ListView.java:1521)
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.widget.AbsListView.onLayout(AbsListView.java:1113)
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.view.View.layout(View.java:6830)
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:900)
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.view.View.layout(View.java:6830)
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.view.View.layout(View.java:6830)
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.widget.LinearLayout.onLayout(LinearLayout.java:918)
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.view.View.layout(View.java:6830)
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
12-01 22:24:54.883: ERROR/AndroidRuntime(14424): at android.view.View.layout(View.java:6830)
snip...

有人愿意阐明这一点吗? =/

编辑:我已经在 Base 类中实现了所需的方法。

编辑2:添加代码

最佳答案

终于找到了...它在:

    @Override
public View getGroupView(int groupPos, boolean isExpanded, View convertView,
ViewGroup parent) {
TextView tv = getGenericView();
tv.setText(getGroup(groupPos).toString());
return null;
}

它正在返回 null...我真的不应该在困倦的时候编码 =/

关于Android 可扩展 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4325696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com