如何获取TextView和Parsing的特定行/列的字符串值

时间:2011-01-07 18:58:42

标签: android sqlite

我有两个与数据库相关的问题

背景

我可以创建和删除记录 我可以使用StringBuilder显示整个表和/或单行 我可以使用SimpleCursorAdapter在List中显示整个表 我可以从显示的列表中选择所需的记录,获取它的记录ID 我可以在TextView中显示记录ID(作为字符串)。

我似乎无法做到的是:

从列表中选择一个项目,获取它的ID后,我只想显示其字符串值。我遇到了Query返回一个Cursor的问题。当我改变或解析回报时,我没有成功。

显示此值只是能够解析返回的字符串并将其用于某些计算的一个步骤 - 计算和显示它都是最终目标。

问题1:
如何在特定行和列显示记录的字符串值?

问题2:
对于这个数据库,我使用SimpleCursorAdapter来显示List,但是只有列出的字符串是可点击的 - 而不是完整显示的行(意思是,如果内容只有两个字符,那就是你要点击的内容)。

以前,我使用带有ArrayAdapter的ListAdapter并选择列出的行上的任何位置。
所以,问题是:如何使整行可点击?

任何建议表示赞赏,谢谢 代码如下 - 但是,注意这个代码片段只是众多尝试中的一个,而且这个代码片段显示了光标返回的内容 - 它不是播放中的尝试之一,也不是更改它的类型来显示内容我想 - 这只是一个测试:

//ON CLICK
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
  super.onListItemClick(l, v, position, id);

  // test for record id#
   String penut = String.valueOf(id); // YES, it gets the record id# 
 //  Maincode.showItem.setText(penut);  // YES, it displays the record id#

   Cursor myGirl = helpDude.db.query(DbAdapter.TABLE_NAME, null,
     "_id=?", new String[]{penut}, null, null, null);

   String outy = String.valueOf(myGirl);

   Maincode.showItem.setText(outy);  

}//end on click

3 个答案:

答案 0 :(得分:0)

onListItemClick监听器中,您应该致电AdapterView#getItemAtPosition,它将返回已定位在该ID的Cursor对象。你必须把它投到Cursor

所以你的处理程序看起来与此类似:

public void onListItemClick(ListView l, View v, int position, long id) {   
  Cursor c = (Cursor)l.getItemAtPosition(position);

  //use cursor to get data 

}

您可以阅读List7 ApiDemo了解详情。

如果您想对Cursor中的数据执行额外的工作,并在ListView中显示,则必须实施自定义CursorAdapter

一些链接提供了一些帮助:

http://mylifewithandroid.blogspot.com/2008/04/custom-widget-adapters.html

http://blog.cluepusher.dk/2009/11/16/creating-a-custom-cursoradapter-for-android/

http://thinkandroid.wordpress.com/2010/01/11/custom-cursoradapters/

答案 1 :(得分:0)

尝试替换代码的这一行:

String outy = String.valueOf(myGirl);

使用:

String outy = myGirl.getString(the outy column number);

答案 2 :(得分:0)

1)看来,我只能像以前一样做这件事(总共需要11行代码)。但是,它有效。

需要将光标向下移动到表中,将表项(在所需列中)与所需的id和列#进行比较,然后获取它。看起来我不能简单地得到一个特定的表格的单元格而不用光标向下行进,如:heyDudeGoGetThis(rowId,ColId)。

2)傻傻的我(我在这个上睡着了),只需将宽度改为填充。

感谢您的帮助。