我有2项活动。
第一个活动是将JSON数据从服务器解析为ListView
的活动,第二个活动是显示ListView
中所选值的数据的活动。
以下是我的第一项活动的onClick
方法:
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(this, userList,
R.layout.listitemviewall,
new String[] { "namaresto", "alamatresto"},
new int[] {R.id.name, R.id.address});
setListAdapter(adapter);
/**
* select resto
*/
final ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
/**
* move to the next activity
* */
String namanya = ((TextView) findViewById(R.id.name)).getText().toString();
String alamatnya = ((TextView) findViewById(R.id.address)).getText().toString();
//Starting a new Intent
Intent nextScreen = new Intent(getApplicationContext(), InfoTab.class);
//Sending data to another Activity
nextScreen.putExtra("name", namanya);
nextScreen.putExtra("address", alamatnya);
// starting new activity
startActivity(nextScreen);
}
});
这是第二项活动:
TextView txtname = (TextView) findViewById(R.id.textTEST1);
TextView txtaddress = (TextView) findViewById(R.id.TextTEST2);
//displaying data from previous activity
Intent i = getIntent();
// Receiving the Data
String name = i.getStringExtra("name");
String address = i.getStringExtra("address");
// Displaying Received data
txtname.setText(name);
txtaddress.setText(address);
结果,第二个活动始终显示第一个记录!即使我点击ListView
中的第二条或其他记录。
如何让我的代码显示ListView
中选择的正确记录?
答案 0 :(得分:0)
尝试更改这些行:
String namanya = ((TextView) findViewById(R.id.name)).getText().toString();
String alamatnya = ((TextView) findViewById(R.id.address)).getText().toString();
为:
String namanya = ((TextView) view.findViewById(R.id.name)).getText().toString();
String alamatnya = ((TextView) view.findViewById(R.id.address)).getText().toString();
告诉我这是否适合你...
答案 1 :(得分:0)
您没有在onItemClick中选择正确的数据。您可以通过执行parent.getItemAtPosition(position);从列表中检索表示该行的对象;在onItemClick里面。这将为您提供您提供给与该行对应的适配器的列表中的对象。