gpt4 book ai didi

android - 从单击的 ListView 项中获取文本

转载 作者:行者123 更新时间:2023-11-29 21:44:47 25 4
gpt4 key购买 nike

我的 ListView 是从我的数据库中提取的食谱列表。我想在我的 ListView 中获取单击项目的文本。 ListView 通过数据库调用和游标适配器填充。我想使用所选项目的文本在另一个 Activity 中进行另一个数据库调用。这是代码块

listView.setClickable(true);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
final String text = ((TextView)v).getText().toString();
recipeid = myDBAdapter.getRecipeID(text);
Intent intent = new Intent(ListAllRecipes.this, DisplayRecipe.class);
intent.putExtra("recipeid", recipeid);
startActivity(intent);

}

});

当我运行我的代码时,我得到

04-22 14:08:37.022: E/AndroidRuntime(25206): FATAL EXCEPTION: main
04-22 14:08:37.022: E/AndroidRuntime(25206): java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TextView
04-22 14:08:37.022: E/AndroidRuntime(25206): at com.example.ketorecipes.ListAllRecipes$1.onItemClick(ListAllRecipes.java:47)

当我点击 ListView 中的一个项目时。

这是一个 block 中的 Activity :

public class ListAllRecipes extends Activity{
private DBAdapter myDBAdapter;
private ListView listView;
private int recipeid;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_all);



myDBAdapter = new DBAdapter(this);
myDBAdapter.openToRead();
Cursor c = myDBAdapter.getValues();

listView = (ListView)findViewById(R.id.listView1);
String[] from = new String[] {"_id"};
int[] to = new int[] {R.id.name_entry};
SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this, R.layout.list_entry, c, from, to);
listView.setAdapter(cursorAdapter);



listView.setClickable(true);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
final String text = ((TextView)v).getText().toString();
recipeid = myDBAdapter.getRecipeID(text);
Intent intent = new Intent(ListAllRecipes.this, DisplayRecipe.class);
intent.putExtra("recipeid", recipeid);
startActivity(intent);

}

});
}

最佳答案

您将 _id 与 R.id.name_entry 相关联,因此您的列表包含 _id 的任何值。

String[] from = new String[] {"_id"};
int[] to = new int[] {R.id.name_entry};

如果是这样,您可以通过

获取 _id 的名称
Cursor c = cursorAdapter.getCursor();
String text = c.getString(c.getColumnIndex("_id"));

关于android - 从单击的 ListView 项中获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16154990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com