0

我的 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();

这里有什么问题?请帮忙。谢谢。

4

6 回答 6

1

我认为你应该写

 if( selected.equals("Apple")){
//Do your Code
}

代替

 if( selected == "Apple" ){
}
于 2013-01-24T13:02:13.370 回答
0

根据您的 excpetion 使用以下代码,

selected = parent.getItem(position).toString();

你也用过,

if( selected == "Apple" ){

它不是比较字符串的正确方法,而是使用,

if( selected.equals("Apple") ){
于 2013-01-24T13:02:36.490 回答
0

改变

 selected = parent.getItemAtPosition(yourListView.getFirstVisiblePosition() + position).toString();
于 2013-01-24T13:03:09.147 回答
0

对于equality字符串的比较,我们使用 equals() 方法。Android中有两种比较方式。

一个是“==”运算符和另一个“equals()”方法。

"=="比较字符串对象的引用值,而equals()方法比较字符串对象的内容。.

采用

selected.equals("your string")
于 2013-01-24T13:06:00.670 回答
0
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    TextView tv = v.findViewById(R.id.myTitle);
    tv.getText().toString(); // String
} 

您可以像上述方式一样获取列表项的子视图。

于 2013-02-05T14:18:39.350 回答
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();
    }
于 2015-04-11T23:40:18.620 回答