无法从列表视图中随机选择数据

时间:2012-03-29 13:46:17

标签: android listview hashmap put

我有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中选择的正确记录?

2 个答案:

答案 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里面。这将为您提供您提供给与该行对应的适配器的列表中的对象。