【问题标题】:Android - Get Text from List which is read from Local DBAndroid - 从从本地数据库读取的列表中获取文本
【发布时间】:2015-11-15 14:25:00
【问题描述】:

所以我有一个小型数据库,其中有一个城市列表。

我正在将所有信息放入列表中,现在我正在尝试从列表中的 Clicked City 中获取文本。这是我目前拥有的。

package com.example.fiox.casopratico1;

/**
* Created by FioX on 11/15/2015.
*/

import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.provider.BaseColumns;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;


public class Selecionacidade extends ListActivity {
private Cursor cursor;

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

    final CidadesSQL dbHelper = new CidadesSQL(Selecionacidade.this);


    //fica com uma váriavel do tipo base de dados
    final SQLiteDatabase db = dbHelper.getWritableDatabase();
    final String[] camposDb = {"cidade", BaseColumns._ID};

    //mostramos todos os elementos da base de dados "marcas" de forma ascendente
    cursor = db.query("cidades", camposDb, null, null, null, null, "cidade ASC");

    // os elementos da lista são passados para o campo text1 que é interno do sistema para usar nas listas
    int[] camposView = new int[]{android.R.id.text1};

    // são colocados os elementos na lista
    final SimpleCursorAdapter adapter = new SimpleCursorAdapter(Selecionacidade.this,
            android.R.layout.two_line_list_item, cursor, camposDb, camposView);
    setListAdapter(adapter);
}

protected void onListItemClick(ListView l, View v, int position, long id) {
     String cidade = l.getChildAt(position).toString();
    EditText editText = (EditText)findViewById(R.id.editText2);
    editText.setText(cidade);
}
}

遗憾的是,我从 l.getchildat(position).tostring() 得到的结果不是我想要的。它给了我一些与 Listview 对象本身有关的随机文本。但是我想要数据库中的城市名称。

【问题讨论】:

    标签: android list text get


    【解决方案1】:

    您需要调用getItemAtPosition() 来获取该行中包含的数据。 getChildAt() 获取对该行中视图的引用,而不是数据。

    【讨论】:

    • getItemAtPosition 给了我“android.database.sqlite.SQLiteCursor@24be0128”,无论我选择哪个城市,这都是我的结果。我做错了吗?。
    • 我明白了,那是因为您正在使用 CursorAdapter。能否尝试从返回的Cursor 对象中获取字符串?
    • 遗憾的是它不允许我从 Cursor 获取字符串。如果有一种方法可以在不使用 CursorAdapter 的情况下从数据库中获取信息,我想这会起作用吗?
    猜你喜欢
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 2021-11-16
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多