意图数据显示不正确

时间:2011-04-10 16:47:17

标签: android

我遇到了一个问题,当我进入下一个活动然后通过意图传递数据时,它只显示数据库中的最后一个条目,而不是单击的项目信息。

的.java

public class TimsFavs extends ListActivity implements OnItemClickListener {

/** Called when the activity is first created. */
ArrayList<String> results = new ArrayList<String>();

// Database results
String col0,col1,col2,col3,col4,col5,col6,col7;

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.timsfavs);
    DBAdapter db = new DBAdapter(this);

    //---get all Locations---
    db.open();

    Cursor c =  db.getAllLocation();

    if (c.moveToFirst())
    {
        do {

            col0 =  c.getString(c.getColumnIndex(DBAdapter.KEY_ROWID));
            col1 =  c.getString(1);
            col2 =  c.getString(2);
            col3 =  c.getString(3);
            col4 =  c.getString(4);
            col5 =  c.getString(5);
            col6 =  c.getString(6);
            col7 =  c.getString(7);

            results.add(col0);

        } while (c.moveToNext());
    }
    db.close();

    setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,results));
    ListView lv;
    lv = getListView();
    lv.setTextFilterEnabled(true);
    lv.setBackgroundColor(Color.rgb(83, 05, 14));
    lv.setOnItemClickListener((OnItemClickListener) this);

}

public void onItemClick(AdapterView<?> TimsFavs, View view, int position, long id) {

    Intent i = new Intent(getApplicationContext(), TimsFavsMore.class);

    i.putExtra("ct_id_pass", col0);
    i.putExtra("ct_storeid_pass", col1);
    i.putExtra("ct_address_pass", col2);
    i.putExtra("ct_city_pass", col3);
    i.putExtra("ct_province_pass", col4);
    i.putExtra("ct_country_pass", col5);
    i.putExtra("ct_pcode_pass", col6);
    i.putExtra("ct_phnum_pass", col7);

    startActivity(i);
    finish();

}

}

我的其他活动是

`公共类TimsFavsMore扩展了Activity {     DBAdapter db = new DBAdapter(this);

String rowId;

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

        Intent i = getIntent();
        Bundle b = i.getExtras();

         final String rowId = b.getString("ct_id_pass");
         final String phnum = b.getString("ct_phnum_pass");
         final String storeid = b.getString("ct_storeid_pass");
         final String address = b.getString("ct_address_pass");
         final String city = b.getString("ct_city_pass");
         final String province = b.getString("ct_province_pass");
         final String country = b.getString("ct_country_pass");
         final String pcode = b.getString("ct_pcode_pass");

        TextView title = (TextView) findViewById(R.id.textview);
        title.setText(Html.fromHtml("<br>Row ID: " + rowId + "<br><b><u>Location Address:</u></b><br><br>Store #" + storeid + "<br><br>" + address + "<br>" + city + ", " + province + "<br>" + country +"<br>" + pcode +"<br><br><b><u>Contact Info:</b></u><br><br>" + phnum +"<br>"));

// open to Nav

final Button button1 = (Button) findViewById(R.id.gohere);
button1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {

        String uri = "google.navigation:q=Tim%20Hortons,%20" + address + ",%20" + city + ",%20" + province + ",%20" + pcode + "";
        Intent i2 = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
        startActivity(i2);

    }
});

// open to maps

final Button button2 = (Button) findViewById(R.id.showmap);
button2.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {

        String uri2 = "geo:0,0?q=Tim%20Hortons,%20" + address + ",%20" + city + ",%20" + province + ",%20" + pcode + "";
        Intent i3 = new Intent(Intent.ACTION_VIEW, Uri.parse(uri2));
        startActivity(i3);

    }
});

// Add to My Timmies List

final Button button3 = (Button) findViewById(R.id.removefav);
button3.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {

      //---add 2 SQLite---

        db.open();

        if (db.deleteLocation(rowId))
            Toast.makeText(getApplicationContext(), " Delete successful.", 
                Toast.LENGTH_LONG).show();
        else
            Toast.makeText(getApplicationContext(), "Delete failed.", 
                Toast.LENGTH_LONG).show();            
        db.close();

       Intent i = new Intent(getApplicationContext(), MyTimmies.class);
       startActivity(i);
       finish();

    }
});


final Button button4 = (Button) findViewById(R.id.favsdone);
button4.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {

   Intent i4 = new Intent(getApplicationContext(), MyTimmies.class);
       startActivity(i4);
       finish();

    }
});
 }

}`

任何想法?

1 个答案:

答案 0 :(得分:0)

您正在迭代光标并将值分配给字符串。当它完成迭代时,你的字符串只包含你指定的最后一个值,然后你传递它。

您应该将列表绑定到SimpleCursorAdapter,而不是创建完整的不同字符串数组。然后在onClickListener中,您只需传递标识数据库中数据行的键。