2010-09-06 215 views
0

我需要列表视图中的一个小帮助。我正在生成一个列表视图,但每当我做getChildAt(int position)它会抛出NullPointerException。Android listView:空指针异常

下面是代码

_list=(ListView)findViewById(android.R.id.list); 

_loadListElements(); 

_showListUI(); 

_list.getChildAt(1).setBackgroundColor(Color.WHITE); 
+0

logcat说什么? – Bevor 2010-09-06 13:11:52

+0

写入行后只有空指针异常 – viv 2010-09-06 13:13:07

+0

将代码分成多行。所以我们可以看到_list是否为null,或者getChildAt(1)是否返回null。 – bramp 2010-09-06 13:13:12

回答

1

如果没有超过一个子元素,那么一个一定会给你一个NullPointerException,你必须开始在prgramming从零向上计数。所以你可能想试试这个。

_list.getChildAt(0).setBackgroundColor(Color.WHITE); 

但没有更多的代码和错误堆栈的logcat提取,很难说。

+0

kkkkkk我会尝试从日志猫身上粘贴更多的细节,目前我不在我的工作场所。我想要的是在列表视图中查看单行。单击列表项时返回的相同视图????? – viv 2010-09-06 15:55:38

1

不知道你试图实现什么功能,我不确定这些建议中的任何一个是否相关。

而不是使用list.getChildAt(),您可以设置您使用的任何适配器的getView()方法的背景颜色?你会有看法,但我不知道你是否有数据尚未知道哪一个改变背景。

从您的一条评论中,您听起来似乎希望获得任何列表项目被点击的视图。 ListActivity.onListItemClick()中提供的视图“v”看起来应该是您希望使用的视图。

希望这两个帮助之一。

+0

雅,我最初只在getView()中做过,但没有给出预期的结果。它设置了多于一行的背景。所以我想在列表创建后跳到特定行的视图。例如,在列表创建后,为列表视图的第4行的背景着色。我仍然试图如果我会得到一些解决方案,我会在这里发布.....感谢您的答复 – viv 2010-09-07 06:02:49

0

得到它的工作............. 在getView(),它之所以没有更早根据我的是工作是,

对于一个条件检查。例如:如果(条件匹配)改变颜色;

时使用列表更新自己......这是造成问题

因此,正确的是:如果(条件)做​​某事]其他[恢复到原始状态]

这是因为我没有其他说法我得到了问题。

1

我曾经在OnListItemClickListener()中试过,但失败了。最后,我对自定义的适配器进行了一些修改,以便使用listview。在getView()中,我将clickListener应用于我经常添加到列表中的项目。 n在那里做所有必需的功能。这里是我的代码,我在列表n中添加图像视图,因此在imageview上应用侦听器。

getChildAt(i)抛出异常,因为它只对可见项-1有效。所以它不起作用。

我认为它会帮助那些想在特定列表项目被选中时改变颜色的人。去吧..

在getView()的定制适配器 // ----------------------------- ---- code ------------------------------------------

LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View rowView = inflater.inflate(R.layout.icon_image_layout, parent, false); ImageView imageView = (ImageView) rowView.findViewById(R.id.Icon_ImageView); imageView.setClickable(true); final int pos=position; imageView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub // TODO Auto-generated method stub try{ if(previous_view!=null) previous_view.setBackgroundColor(Color.WHITE); }catch (Exception e) { System.out.println("Exception Occurs Previous View"); } v.setBackgroundColor(Color.RED); MainActivity.imageView.setImageResource(MainActivity.Image_Name[pos]); previous_view=v; return false; } });