Java ImageButton.setId=空指针异常
我正在创建一个imageButton,我要将ID设置为imageButton。但我得到的是nullpointerexception错误。。谁能告诉我我做错了什么?非常感谢:)我已经声明public int count=0Java ImageButton.setId=空指针异常,java,android,nullpointerexception,imagebutton,Java,Android,Nullpointerexception,Imagebutton,我正在创建一个imageButton,我要将ID设置为imageButton。但我得到的是nullpointerexception错误。。谁能告诉我我做错了什么?非常感谢:)我已经声明public int count=0 public int count=0; final ImageButton button =(ImageButton)convertView.findViewById(R.id.favoritelist_button); button.setId(co
public int count=0;
final ImageButton button =(ImageButton)convertView.findViewById(R.id.favoritelist_button);
button.setId(count); //null pointer exception
count++;
button.setImageResource(R.drawable.phone);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Do something in response to button click
if(!tFave){
button.setImageResource(R.drawable.phone);
tFave = true;
}
else{
button.setImageResource(R.drawable.gmail);
tFave = false;
}
}
});
由于您处理的是
convertview
,我猜这段代码来自ListView
的适配器的getView
由于适配器重复使用视图,因此您所做的任何更改(如更改视图ID)都将在下次使用视图时进行
在本例中,您使用setID
更改了按钮的ID。这可能是第一次起作用,但下一次,您再也找不到该按钮了-对findViewById
的调用返回null,因为IDfavoritelist\u按钮已被删除并替换为您分配的ID(以计数)
只需删除对setID
的调用。如果您需要它,发布您认为需要它的原因,人们会帮助您找到不同的解决方案。按钮可能为空。发布还有图像按钮的xml我猜是convertView.findViewById(R.id.favoritelist_按钮);确实为您提供了Null所以,您正在尝试将id重新分配给已经有id的项目。。。我想R会对它非常生气的!!你看,setId()应该用于你在运行时创建的那些对象,在那些确实需要它的场合。如果你想在不同的按钮中存储一些id,我建议你使用setTag()
和getTag()
。我的应用程序是列出你喜欢的韩语单词。可扩展的列表如下:AAAAA-动词-eat(星形按钮)BBBBB-动词-sleep(星形按钮)如果用户不想再保留最喜欢的单词,可以按下星形按钮。因此,我必须为星形按钮分配ID,以便我知道哪个按钮不受欢迎,并且我可以从数据库中删除该单词。您可以使用另一种方法来执行此操作,例如,其他人建议使用setTag
和getTag
来存储该信息。不要更改ID。