应用程序从列表项文本视图中传递了错误的文本
App is passing wrong text from list items textview
我的应用正在传递从列表项中的 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);
}
}
});
我确定每个列表项中的文本都是正确的,我可以看到传递给下一个 activity 的文本是错误的,因为我可以在日志中看到变量值,但它是错误的。
两件事:
这不会解决您的问题,但不要在 Intent 初始化中使用 getApplicationContext()
,而是使用 <YourActivityName>.this
。
您获取字符串的方式有点不寻常,而且没有必要。最有可能的是,您正在为列表视图加载适配器,其中包含某种包含 "pid" 的数组,对吗?因此,只需在 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);
}
}
});
我的应用正在传递从列表项中的 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);
}
}
});
我确定每个列表项中的文本都是正确的,我可以看到传递给下一个 activity 的文本是错误的,因为我可以在日志中看到变量值,但它是错误的。
两件事:
这不会解决您的问题,但不要在 Intent 初始化中使用
getApplicationContext()
,而是使用<YourActivityName>.this
。您获取字符串的方式有点不寻常,而且没有必要。最有可能的是,您正在为列表视图加载适配器,其中包含某种包含 "pid" 的数组,对吗?因此,只需在
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);
}
}
});