【问题标题】:Android Studio ListView - null pointer exception when trying to extract text from selected itemAndroid Studio ListView - 尝试从选定项目中提取文本时出现空指针异常
【发布时间】:2015-01-28 23:32:14
【问题描述】:

我正在尝试从 OnItemClick 中 ListView 的选定项目中保存文本。

我尝试了很多不同的方法都无济于事,我想我在这里遗漏了一些非常愚蠢的东西......

SnakesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String choice = SnakesListView.getItemAtPosition(position).toString();

            Intent intent = new Intent(SnakeList.this, SnakeProfile.class);
            intent.putExtra("SelectedSnakeName", choice);
            startActivity(intent);
        }
    });

数据显示正常,我似乎无法引用它。 导致异常的行:

String choice = SnakesListView.getItemAtPosition(position).toString();

此活动的完整代码

public class SnakeList extends Activity {

ListView SnakesListView;
Cursor cursor;
Button NewSnakeBtn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_snake_list);

    SnakesListView = (ListView) findViewById(R.id.SnakesListView);
    NewSnakeBtn = (Button) findViewById(R.id.NewSnake);

    SQLiteDatabase db = openOrCreateDatabase("snakeDB", Context.MODE_PRIVATE, null); // ACCESSES DB
    cursor = db.rawQuery("SELECT name FROM snakes", null); // SETS cursor TO RESULTS OF QUERY
    List<String> SnakeNamesList = new ArrayList<String>();
    ArrayAdapter SnakeNamesAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, SnakeNamesList);
    SnakeNamesList.clear(); // REMOVES ANY NAMES CURRENTLY IN NAME ARRAY TO AVOID DUPLICATES
    SnakesListView.setAdapter(SnakeNamesAdapter);

    if (cursor.moveToFirst()) {
        cursor.moveToFirst(); // MOVES CURSOR TO FIRST POSITION
        do SnakeNamesList.add(cursor.getString(0)); // RETURNS STRING FROM FIRST COLUMN (NAME)
        while (cursor.moveToNext());
    }

    NewSnakeBtn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            startActivity(new Intent(SnakeList.this, NewSnake.class));
        }
    });

    SnakesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String choice = SnakesListView.getItemAtPosition(position).toString();

            Intent intent = new Intent(SnakeList.this, SnakeProfile.class);
            intent.putExtra("SelectedSnakeName", choice);
            startActivity(intent);
        }
    });

}

【问题讨论】:

  • 没有引用ListView;您可以从适配器本身获取值。看我的回答。

标签: android listview exception android-studio


【解决方案1】:

没有使用引用ListView;您可以从适配器本身获取值。

改变

String choice = SnakesListView.getItemAtPosition(position).toString();

String choice = SnakeNamesAdapter.getItem(position).toString();

【讨论】:

  • 谢谢!唯一没试过的哈
【解决方案2】:

将字符串arraylist(SnakeNamesList)声明为全局变量

改变

String choice = SnakesListView.getItemAtPosition(position).toString();

String choice = SnakeNamesList.get(position);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    相关资源
    最近更新 更多