- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建使用可扩展列表 View 的android应用,每个子项都包括图像 View 和扩展了 BaseExpandableAdapter 的文本。
图像在可绘制的forlder中,我使用数组检索它。
当我尝试选择一个组来扩展它时,应用程序强制关闭并在日志猫中播放了我不理解的错误。
谁能帮我解决这个错误?
LogCat
03-23 20:21:15.927: E/AndroidRuntime(8513): FATAL EXCEPTION: main
03-23 20:21:15.927: E/AndroidRuntime(8513): java.lang.NullPointerException
03-23 20:21:15.927: E/AndroidRuntime(8513): at com.devleb.expandablelistdemo3.ExpandableAdapter.getChildView(ExpandableAdapter.java:129)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:451)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.widget.AbsListView.obtainView(AbsListView.java:2177)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.widget.ListView.makeAndAddView(ListView.java:1840)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.widget.ListView.fillDown(ListView.java:675)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.widget.ListView.fillSpecific(ListView.java:1333)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.widget.ListView.layoutChildren(ListView.java:1633)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.widget.AbsListView.onLayout(AbsListView.java:2012)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.View.layout(View.java:14289)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.ViewGroup.layout(ViewGroup.java:4562)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1076)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.View.layout(View.java:14289)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.ViewGroup.layout(ViewGroup.java:4562)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.View.layout(View.java:14289)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.ViewGroup.layout(ViewGroup.java:4562)
03-23 20:21:15.927: E/AndroidRuntime(8513): at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:349)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.View.layout(View.java:14289)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.ViewGroup.layout(ViewGroup.java:4562)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.View.layout(View.java:14289)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.ViewGroup.layout(ViewGroup.java:4562)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1976)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1730)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.Choreographer.doFrame(Choreographer.java:532)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.os.Handler.handleCallback(Handler.java:730)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.os.Handler.dispatchMessage(Handler.java:92)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.os.Looper.loop(Looper.java:137)
03-23 20:21:15.927: E/AndroidRuntime(8513): at android.app.ActivityThread.main(ActivityThread.java:5103)
03-23 20:21:15.927: E/AndroidRuntime(8513): at java.lang.reflect.Method.invokeNative(Native Method)
03-23 20:21:15.927: E/AndroidRuntime(8513): at java.lang.reflect.Method.invoke(Method.java:525)
03-23 20:21:15.927: E/AndroidRuntime(8513): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
03-23 20:21:15.927: E/AndroidRuntime(8513): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-23 20:21:15.927: E/AndroidRuntime(8513): at dalvik.system.NativeStart.main(Native Method)
package com.devleb.expandablelistdemo3;
import android.app.Activity;
import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListAdapter;
public class ExpandableAdapter extends BaseExpandableListAdapter implements ExpandableListAdapter {
public Context context;
private LayoutInflater vi;
private String[][] data;
int _objInt;
private static final int GROUP_ITEM_RESOURCE = R.layout.group_layout;
private static final int CHILD_ITEM_RESOURCE = R.layout.child_layout;
public ExpandableAdapter(Context context, Activity activity, String[][] data) {
this.data = data;
this.context = context;
vi = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
_objInt = data.length;
}
@Override
public String getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return data[groupPosition][childPosition];
}
@Override
public long getChildId(int arg0, int arg1) {
// TODO Auto-generated method stub
return arg1;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View v, ViewGroup parent) {
// TODO Auto-generated method stub
String child = getChild(groupPosition, childPosition);
int id_res = 0;
if (groupPosition == 0) {
if (childPosition == 0)
id_res = R.drawable.algeria_flag;
if (childPosition == 1)
id_res = R.drawable.cote_divoire_flag;
if (childPosition == 3)
id_res = R.drawable.nigeria_flag;
if (childPosition == 4)
id_res = R.drawable.cameroon_flag;
if (childPosition == 5)
id_res = R.drawable.ghana_flag;
} else if (groupPosition == 1) {
if (childPosition == 0)
id_res = R.drawable.australia;
if (childPosition == 1)
id_res = R.drawable.japan;
if (childPosition == 2)
id_res = R.drawable.iran_flag;
if (childPosition == 3)
id_res = R.drawable.korea_flag;
} else if (groupPosition == 2) {
if (childPosition == 0)
id_res = R.drawable.belgium_flag;
if (childPosition == 1)
id_res = R.drawable.croatian_flag;
if (childPosition == 2)
id_res = R.drawable.france_flag;
if (childPosition == 3)
id_res = R.drawable.gress;
if (childPosition == 4)
id_res = R.drawable.netherlands_flag;
if (childPosition == 5)
id_res = R.drawable.russia_flag;
if (childPosition == 6)
id_res = R.drawable.switzerland;
if (childPosition == 7)
id_res = R.drawable.bousna;
if (childPosition == 8)
id_res = R.drawable.england_flag;
if (childPosition == 9)
id_res = R.drawable.germany_flag;
if (childPosition == 10)
id_res = R.drawable.italy_flag;
if (childPosition == 11)
id_res = R.drawable.portugal;
if (childPosition == 12)
id_res = R.drawable.spain;
} else if (groupPosition == 3) {
if (childPosition == 0)
id_res = R.drawable.costa_rica_flag;
if (childPosition == 1)
id_res = R.drawable.mexico_flag;
if (childPosition == 2)
id_res = R.drawable.honduras_flag;
if (childPosition == 3)
id_res = R.drawable.united_states_flag;
} else if (groupPosition == 4) {
if (childPosition == 0)
id_res = R.drawable.argentina_flag;
if (childPosition == 1)
id_res = R.drawable.czech_republic_flag;
if (childPosition == 2)
id_res = R.drawable.ecuador_flag;
if (childPosition == 3)
id_res = R.drawable.brazil_flag;
if (childPosition == 4)
id_res = R.drawable.colombia_flag;
if (childPosition == 5)
id_res = R.drawable.uruguay_flag;
}
if (child != null) {
v = vi.inflate(CHILD_ITEM_RESOURCE, null);
ViewHolder holder = new ViewHolder(v);
//holder.text.setText(Html.fromHtml(child));
holder.text.setText(child);
holder.imageview.setImageResource(id_res);
}
return v;
}
@Override
public int getChildrenCount(int arg0) {
// TODO Auto-generated method stub
return data[arg0].length;
}
@Override
public Object getGroup(int arg0) {
// TODO Auto-generated method stub
return "group: " + arg0;
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return data.length;
}
@Override
public long getGroupId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getGroupView(int groupPosition, boolean arg1, View v,
ViewGroup arg3) {
// TODO Auto-generated method stub
String group = null;
// int id_res = 0;
long group_id = getGroupId(groupPosition);
if (group_id == 0) {
group = "Africa";
// id_res = R.drawable.audi;
} else if (group_id == 1) {
group = "Asia";
// id_res = R.drawable.bmw;
} else if (group_id == 2) {
group = "Europe";
// id_res = R.drawable.ferrari;
} else if (group_id == 3) {
group = "North and Central America";
} else if (group_id == 4) {
group = "South America";
}
if (group != null) {
v = vi.inflate(GROUP_ITEM_RESOURCE, null);
ViewHolder holder = new ViewHolder(v);
holder.text.setText(Html.fromHtml(group));
// holder.imageview.setImageResource(id_res);
}
return v;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean isChildSelectable(int arg0, int arg1) {
// TODO Auto-generated method stub
return true;
}
}
package com.devleb.expandablelistdemo3;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.widget.ExpandableListView;
public class MainActivity extends Activity {
final Context context = this;
private static final String[][] data = {
{ "Alegria", " Côte d'Ivoire", " Nigeria", "Cameroon", "Ghana" },
{ "Australia", " Japan", "Iran", "Korea" },
{ "Belgium", " Croatia", " France", "Greece", " Netherlands",
" Russia", " Switzerland", "Bosnia and Herzegovina",
" England", " Germany", "Italy", "Portugal", "Spain" },
{ "Costa Rica", " Mexico", "Honduras", " USA" },
{ "Argentina", " Chile", "Ecuador", " Brazil", "Colombia",
"Uruguay" } };
private ExpandableListView expandableListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
expandableListView = (ExpandableListView) findViewById(R.id.listView);
expandableListView
.setAdapter(new ExpandableAdapter(context, this, data));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
package com.devleb.expandablelistdemo3;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class ViewHolder {
public TextView text;
public ImageView imageview;
public ViewHolder(View v) {
this.text = (TextView) v.findViewById(R.id.text1);
this.imageview = (ImageView) v.findViewById(R.id.image1);
}
}
最佳答案
该问题似乎与未设置ViewHolder的文本字段有关。
从堆栈跟踪中观察到,它在ExpandableAdapter.java:129上给出了NullPointerException。当您在ViewHolder的构造函数中正确设置字段时,在我看来,您使用的布局资源实际上并不包含id text1
,因此FindViewById(R.id.text1)
返回null。
关于android - 创建android expandablelist View 不要强制关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22596809/
我一直很难编辑我的 .htaccess 文件来一起做这三件事。我已经能够分别获得每个部分,但我只是不明白逻辑流程如何使它们全部工作。 这是我能够使用 bluehost support 上的演示进行整合
我制作的宏将模板工作簿保存为两个单独的文件。每个测试保存一个(位置 1、2、3 或 4),然后在另一个宏中使用每个测试的数据。第二个是保留用于备份的原始数据文件。现在的问题是每次我在每个位置运行测试并
我正在写一篇关于如何使用 OCaml 的模块系统而不是 Java 的 OO 系统(一个有趣的视角)的博客文章。我遇到了一些我不理解的关于强制的事情。下面是一个基本模块和两个包含它的模块: module
我有一段将被执行多次(5,000+)的代码,以及一个仅在第一次为真的 if 语句。我曾想过使用“FIRST”变量并每次都进行比较,但每次都检查它似乎是一种浪费,即使我知道它不需要。 bool FIRS
首先,我是 Perforce 的新手,我主要通过其文档进行学习。 因此,我们即将从 CVS 迁移到 Perforce,我最近学到了一个避免更改每个工作区的 P4CLIENT 的好方法,即在工作区根目录
我正在为一段代码编写测试,其中包含我试图涵盖的 IOException 捕获。 try/catch 看起来像这样: try { oos = new ObjectOutputStream(new
我正在尝试在新闻项目滚动之间添加延迟。我知道 $.each() 通过不等待动画完成来完成其工作,但我想知道如何制作它,以便一次向上滚动一个项目并等到最后一个动画完成后再继续在循环中。 $(functi
假设已经编写了一个方法,需要一个排序列表作为其输入之一。当然这将在代码中进行注释和记录,param 将被命名为“sortedList”,但如果有人忘记,则会出现错误。 有没有办法强制输入必须排序?我正
我正在尝试将传入请求重定向到 https://www.domain.com/和所有 https://www.domain.com/ {所有页面}并且没有什么麻烦。我试过的方法: 添加此行:Redire
我将如何实现以下内容: title_selection = raw_input("Please type in the number of your title and press Enter.\n%
我有一个登录表单,我需要强制关闭自动完成功能。我试过了 jquery: $('#login').attr("autocomplete", "off"); HTML: Javascript:docume
我想知道我应该怎么做才能强制从 dev 分支 merge 到我的 master 分支?使用“git merge dev”会导致很多冲突。但是,我不想单独处理它们。相反,我只是想使用我的 dev 分支中
当安装 Hl7.Fhir.DSTU2 和 Hl7.Fhir.R4 这两个 Nuget 包时,我们得到如下信息: DSTU2 包似乎在使用 Hl7.Fhir.Support.Poco 版本 3.4.0
我正在尝试让一个功能组件在 testFn 执行时强制重新渲染。我想使用状态来做到这一点(如果有更好的方法请说出来),这似乎成功地强制重新渲染但只有两次,然后什么都没有。 我构建了一个简单的演示来模拟这
默认情况下,g++ 似乎会省略未使用的类内定义方法的代码。示例 from my previous question : struct Foo { void bar() {} void baz(
我正在尝试使用 here 中介绍的技术使我的网站背景以比内容慢的速度滚动。我不希望背景固定,只希望更慢。 这是 HTML 的样子: .parallax { perspective: 1px;
我能找到的最相似的问题是 'how to create a row of scrollable text boxes or widgets in flutter inside a ListView?'
我有以下 eslint 配置: "object-curly-newline": ["error", { "ImportDeclaration": "never",
我正在使用 TinyMCE 插件并将 valid_elements 选项设置为: "a[href|target:_blank],strong/b,em/i,br,p,ul,ol,li" 即使没有列出数
您好,我想使用以下命令放置多行描述 p4 --field Description="MY CLN Header \\n my CLN complete description in two -thre
我是一名优秀的程序员,十分优秀!