我的listview适配器出了问题。
请检查下面的代码:
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
// TODO Auto-generated method stub
String selected;
selected = parent.getItemAtPosition(position).toString();
if( selected == "Apple" ){
Intent apple = new Intent(Fruits.this, Apples.class);
startActivity(apple);
}
else if( selected == "Apricot" ){
Intent apricot = new Intent(Fruits.this, Apricots.class);
startActivity(apricot);
}
else if( selected == "Avocado" ){
Intent avocado = new Intent(Fruits.this, Avocado.class);
startActivity(avocado);
}
} // end of OnItemClick method
每当我选择一行时,它就会在这一行上抛出一个nullpointerexception:
selected = parent.getItemAtPosition(position).toString();
这是什么问题?请帮忙。感谢。
答案 0 :(得分:1)
我认为你应该写
if( selected.equals("Apple")){
//Do your Code
}
而不是
if( selected == "Apple" ){
}
答案 1 :(得分:0)
根据您的例外情况,请使用以下代码
selected = parent.getItem(position).toString();
你也用过,
if( selected == "Apple" ){
比较字符串的方法不正确,而不是使用
if( selected.equals("Apple") ){
答案 2 :(得分:0)
更改
selected = parent.getItemAtPosition(yourListView.getFirstVisiblePosition() + position).toString();
答案 3 :(得分:0)
为了比较字符串的equality
,我们使用equals()方法。 Android中有两种比较方式。
一个是“==”运算符和另一个“equals()”方法。
"=="
比较字符串对象的引用值,而equals()
方法比较字符串对象的内容。
使用
selected.equals("your string")
答案 4 :(得分:0)
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
TextView tv = v.findViewById(R.id.myTitle);
tv.getText().toString(); // String
}
您可以像上面那样获取列表项的子视图。
答案 5 :(得分:0)
如果您的适配器包含模型,请使用以下代码:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
itemDrawer seleted = (itemDrawer) parent.getItemAtPosition(position);
Toast.makeText(getApplicationContext(), seleted.getTitle(), Toast.LENGTH_SHORT).show();
}