我的应用是传递从列表项中的TextView获取的文本。我知道这个文本视图中的文本是正确的,因为我可以看到它没问题。从TextView获取的文本是MySql数据库中的照片pid。
我的onItemClick代码:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (((ImageView) findViewById(R.id.reviewImageView)).getBackground() != null) {
String pid = ((TextView) findViewById(R.id.reviewListPid)).getText().toString();
Intent i = new Intent(getApplicationContext(), photoActivity.class);
i.putExtra("pid", pid);
i.putExtra("database", database_name);
startActivity(i);
}
}
});
我确信每个列表项中的文本都是正确的,我可以看到传递给下一个活动的文本是错误的,因为我可以在日志中看到变量值,这是错误的。
答案 0 :(得分:1)
两件事:
这不会解决您的问题,但不是在您的意图初始化中使用getApplicationContext()
而是使用<YourActivityName>.this
。
你获得String的方式有点不寻常,而且没必要。最有可能的是,您正在使用某种包含&#34; pid&#34;的数组为您的listview加载适配器,对吗?因此,只需从onItemClickListener
回调中获取该数组中的值。
看起来像这样:
String[] items = {"..."};
ArrayAdapter<String> itemsAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
listView.setAdapter(itemsAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (((ImageView) findViewById(R.id.reviewImageView)).getBackground() != null) {
String pid = items[position];
Intent i = new Intent(MyActivity.this, photoActivity.class);
i.putExtra("pid", pid);
i.putExtra("database", database_name);
startActivity(i);
}
}
});