Java AdapterHandler-抽象类空指针异常
我的ListView自定义适配器中有onClickListenerJava AdapterHandler-抽象类空指针异常,java,android,Java,Android,我的ListView自定义适配器中有onClickListener holder.name.setText(dataModelList.get(position).getRadio_name()); final ViewHolder finalHolder = holder; holder.name.setOnClickListener(new View.OnClickListener() { @Override public void onC
holder.name.setText(dataModelList.get(position).getRadio_name());
final ViewHolder finalHolder = holder;
holder.name.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(adapterhandler !=null) {
adapterhandler.updateText(dataModelList.get(position).getRadio_name());
}
if(!mRadioManager.isPlaying()) {
mRadioManager.connect();
mRadioManager.startRadio(dataModelList.get(position).getRadio_url());
}
else
{
mRadioManager.stopRadio();
}
}
});
然后我创建了一个抽象类来更新TextView
public abstract class InterfaceUpdate
{
公共void updateText(字符串文本){}
}
和片段中的侦听器以更新TextView:
@Override
public void onRadioStarted() {
adapter.adapterhandler = new InterfaceUpdate() {
@Override
public void updateText(String text) {
super.updateText(text);
title.setText(text);
}
};
我有什么问题?我做不到
adapterhandler.updateText(dataModelList.get(position.getRadio_name())
不检查它是否为null,因为它是generate NullPointerException
当我第一次单击列表元素时,TextView并没有改变,第二次是完全改变…;/您知道如何不使此adapterhandler为空吗?问题是,直到您第一次尝试调用updateText之后,才创建adapterhandler。(只有
mRadioManager.startRadio
调用onRadioStarted()回调后才会调用它)
试试这个(尽管在onClick中构造处理程序不是一个好的设计)
并更改已启动的收音机:
@Override
public void onRadioStarted() {
mRadioManager.startRadio(dataModelList.get(position).getRadio_url());
};
为什么要调用super.updateText(text)?你知道它什么都不做。它只是垃圾代码,只是被删除了。。。问题是,我在广播播放时调用此updateText,但第一次不播放时;)说真的,我不知道该把它放在哪里,它应该在单击列表中的元素时更新(TextView),我不能把它放在onCreate中,等等,因为它将是空的。六羟甲基三聚氰胺六甲醚。。。现在,当我第一次点击时,并没有什么要做的,TextView并没有更新。第二次单击,处理程序和文本不为空,收音机正在播放,所以它的更改正确。
@Override
public void onRadioStarted() {
mRadioManager.startRadio(dataModelList.get(position).getRadio_url());
};