Android 为什么自定义适配器中出现空对象错误?
我有一个自定义适配器集。当Listview有4-5个以上的视图时,应用程序停止工作,并在设置的textview中提供空对象。然而,当我在Listview中有2-3个视图时,这段代码工作得很好。 我已经对获取错误的textview进行了注释。请好好休息一下!多谢各位 更新:似乎如果我快速滚动,就会抛出错误!! 更新2:正如@Piotr所建议的,它工作正常,直到我向下滚动到末尾并向上滚动时,它将视图列表项目标题转换为列表项目。因此,所有视图都成为列表项。 错误: 试试这个:Android 为什么自定义适配器中出现空对象错误?,android,listview,custom-adapter,Android,Listview,Custom Adapter,我有一个自定义适配器集。当Listview有4-5个以上的视图时,应用程序停止工作,并在设置的textview中提供空对象。然而,当我在Listview中有2-3个视图时,这段代码工作得很好。 我已经对获取错误的textview进行了注释。请好好休息一下!多谢各位 更新:似乎如果我快速滚动,就会抛出错误!! 更新2:正如@Piotr所建议的,它工作正常,直到我向下滚动到末尾并向上滚动时,它将视图列表项目标题转换为列表项目。因此,所有视图都成为列表项。 错误: 试试这个: public View
public View getView(int position, View convertView, ViewGroup Parent)
{
int getListPos = newsList.getFirstVisiblePosition();
int count = Integer.parseInt(objects.get(position).get("ListCount"));
my_url = objects.get(position).get(GUID);
if (getListPos == count)
{
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_item_header, null);
TextView HeaderText = (TextView) convertView.findViewById(R.id.headertext);
TextView HeaderContent = (TextView) convertView.findViewById(R.id.headercontent);
HeaderText.setText(objects.get(position).get(POST_TITLE).toUpperCase());
HeaderContent.setText(objects.get(position).get(POST_CONTENT));
if (objects.get(position).get(GUID).equals("NULL"))
{
postImage.setImageResource(R.drawable.default_bg);
}
else
{
new DownloadImageTask((ImageView) convertView.findViewById(R.id.img)).execute(my_url);
}
}
else
{
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_item, null);
TextView thisview = (TextView) convertView.findViewById(R.id.email);
Log.d("Title", String.valueOf(thisview.getText()));
TextView postContent = (TextView) convertView.findViewById(R.id.mobile);
thisview.setText(objects.get(position).get(POST_TITLE).toUpperCase());
postContent.setText(objects.get(position).get(POST_CONTENT));
if (objects.get(position).get(GUID).equals("NULL"))
{
postImage.setImageResource(R.drawable.default_bg);
}
else
{
new DownloadImageTask((ImageView) convertView.findViewById(R.id.img)).execute(my_url);
}
}
return convertView;
}
你能告诉我们你的错误信息吗?Stacktrace?我们怎么猜出你的异常?哦,对不起,我把错误放在这里了。谢谢你,也许你弄错了,他的作品很好。但唯一的问题是,当我向上滚动时,它会将一个视图列表项头转换为列表项。@Wang'lPakhrin
public View getView(int position, View convertView, ViewGroup Parent)
{
int getListPos = newsList.getFirstVisiblePosition();
int count = Integer.parseInt(objects.get(position).get("ListCount"));
my_url = objects.get(position).get(GUID);
if (getListPos == count)
{
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_item_header, null);
TextView HeaderText = (TextView) convertView.findViewById(R.id.headertext);
TextView HeaderContent = (TextView) convertView.findViewById(R.id.headercontent);
HeaderText.setText(objects.get(position).get(POST_TITLE).toUpperCase());
HeaderContent.setText(objects.get(position).get(POST_CONTENT));
if (objects.get(position).get(GUID).equals("NULL"))
{
postImage.setImageResource(R.drawable.default_bg);
}
else
{
new DownloadImageTask((ImageView) convertView.findViewById(R.id.img)).execute(my_url);
}
}
else
{
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_item, null);
TextView thisview = (TextView) convertView.findViewById(R.id.email);
Log.d("Title", String.valueOf(thisview.getText()));
TextView postContent = (TextView) convertView.findViewById(R.id.mobile);
thisview.setText(objects.get(position).get(POST_TITLE).toUpperCase());
postContent.setText(objects.get(position).get(POST_CONTENT));
if (objects.get(position).get(GUID).equals("NULL"))
{
postImage.setImageResource(R.drawable.default_bg);
}
else
{
new DownloadImageTask((ImageView) convertView.findViewById(R.id.img)).execute(my_url);
}
}
return convertView;
}