如何调试错误“字符串资源ID#0x0”

时间:2018-11-05 15:46:38

标签: java android

当我在列表视图中选择项目时,我想获得所选项目的值。

       listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String data = getText(position).toString();
            Toast.makeText(Main2Activity.this,data,Toast.LENGTH_SHORT).show();
        }
    });

在这段代码String data = getText(position).toString()中,出现此错误:

  

字符串资源ID#0x0

此代码是添加列表视图

void DBadd() {
    String name = addTxt1.getText().toString();
    String info = addTxt2.getText().toString();
    if (name.equals("") || info.equals("")) {
        Toast.makeText(getApplicationContext(), "정보를 입력해 주세요", Toast.LENGTH_SHORT).show();
        return;
    } else {
        db.execSQL("INSERT INTO tableName VALUES (null, '" + name + "', '" + info + "');");
        Toast.makeText(getApplicationContext(), "추가 성공", Toast.LENGTH_SHORT).show();

        addTxt1.setText(""); //입력시 EditText에 입력된값 지움
        addTxt2.setText("");
        cursor = db.rawQuery("SELECT * FROM tableName", null);
        startManagingCursor(cursor);    //엑티비티의 생명주기와 커서의 생명주기를 같게 한다.

        adapter = new ArrayAdapter<String>(Main2Activity.this, android.R.layout.simple_list_item_1);
        adapter2 = new ArrayAdapter<String>(Main2Activity.this, android.R.layout.simple_list_item_1);

        while (cursor.moveToNext()) {
            adapter.add(cursor.getString(1));
            adapter2.add(cursor.getString(2));
        }


        listView.setAdapter(adapter);
        listView2.setAdapter(adapter2);

    }
}

如何获取所选项目的价值?

2 个答案:

答案 0 :(得分:0)

我不确定我是否正确理解了您的问题,但让我猜出了想要的行为:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            TextView textViewOfTheClickedRaw = view.findViewById(android.R.id.text1);
            String data = textViewOfTheClickedRaw.getText().toString();
            Toast.makeText(Main2Activity.this, data, Toast.LENGTH_SHORT).show();
        }
    });

这是从android.R.layout.simple_list_item_1

中获取TextView值的方法

但是我真的不认为这应该是您应用程序中的工作方式

答案 1 :(得分:0)

尝试一下,它对我有用:

 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String data = listView.getItemAtPosition(position).toString();
            Toast.makeText(Main2Activity.this,data,Toast.LENGTH_SHORT).show();
        }
    });

,只需像这样直接使用adapter.get(postion)获取字符串值:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String data = adapter.get(position);
            Toast.makeText(Main2Activity.this,data,Toast.LENGTH_SHORT).show();
        }
    });

祝你好运