Java 覆盖对象';s toString使ListView行不可单击?
我有个奇怪的问题。我有一个带有侦听器的简单列表视图。当我覆盖列表对象的toString时,它会正确显示,但单击“停止工作”。当我刚刚在toString中调用super时,单击效果很好 从onCreate:Java 覆盖对象';s toString使ListView行不可单击?,java,android,Java,Android,我有个奇怪的问题。我有一个带有侦听器的简单列表视图。当我覆盖列表对象的toString时,它会正确显示,但单击“停止工作”。当我刚刚在toString中调用super时,单击效果很好 从onCreate: ListView listView = (ListView) findViewById(R.id.listview); SearchAdapter searchAdapter = new SearchAdapter(this, 0, 0, CalendarActivity.satell
ListView listView = (ListView) findViewById(R.id.listview);
SearchAdapter searchAdapter = new SearchAdapter(this, 0, 0, CalendarActivity.satellites);
listView.setAdapter(new ArrayAdapter<Satellite>(this, R.layout.search_cell, R.id.name, CalendarActivity.satellites));
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
startActivity(new Intent(SearchActivity.this, DayActivity.class));
}
});
ListView ListView=(ListView)findViewById(R.id.ListView);
SearchAdapter SearchAdapter=新的SearchAdapter(this,0,0,CalendarActivity.satellites);
setAdapter(新的ArrayAdapter(这个,R.layout.search_单元格,R.id.name,CalendarActivity.satellites));
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共视图单击(AdapterView arg0、视图arg1、整型arg2、长型arg3){
startActivity(新意图(SearchActivity.this、DayActivity.class));
}
});
卫星:
public class Satellite {
public String url;
public boolean active;
public String name;
public int id;
public ArrayList<Date> dates;
@Override
public String toString() {
if (!name.isEmpty()) { //note that this still fails the onClick
return name;
} else {
return super.toString();
}
}
公共级卫星{
公共字符串url;
公共布尔活动;
公共字符串名称;
公共int id;
公共阵列列表日期;
@凌驾
公共字符串toString(){
如果(!name.isEmpty()){//请注意,此操作仍然无法执行onClick
返回名称;
}否则{
返回super.toString();
}
}
发生了什么?在
toString
方法中使用时,可能name
具有null
值。难道不是一个catlog文件,您可以在其中检查Android emulator抛出的错误吗?如果是,请复制/pate在ListView中选择元素时放置在那里的错误消息。没有抛出错误,并且没有一个名称是空的。更新:Putingreturn name+super.toString()
也可以,但是return name+“”
不可以。确实很奇怪。顺便说一下,您可以使用`符号将代码封装在注释中:)(`)像这样(`
(`)