意图数据没有显示正确

问题描述:

我有一个问题,当我去下一个活动,并通过数据意图时,它只显示我关闭数据库的最后一项,而不是点击的项目信息。意图数据没有显示正确

的.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延伸活动{ 将对DBAdapter分贝=新将对DBAdapter(本);

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(); 

    } 
}); 
} 

}`

什么想法?

您正在遍历游标并将值分配给字符串。当它完成迭代时,你的字符串只包含你分配的最后一个值,然后你通过它。

您应该将您的列表绑定到SimpleCursorAdapter,而不是创建一个完全不同的字符串数组。然后在您的onClickListener中,您只需传递可识别数据库中的数据行的密钥即可。

+0

是的,你现在我只需要找出它的编码感谢您采取的方向。 – PsychoDogg 2011-04-10 17:10:55

+0

看看记事本示例 - 它有一个简单的列表视图绑定到一个游标,并应为您提供一个很好的启动点。 http://www.google.com/url?sa=t&source=web&cd=1&sqi=2&ved=0CBsQFjAA&url=http%3A%2F%2Fdeveloper.android.com%2Fresources%2Ftutorials%2Fnotepad%2F&rct=j&q=android%20notepad% 20example&ei = wEeiTfOgB5T2gAfz8tnaBQ&usg = AFQjCNGqDN3kFwMcsPBsIQbCFK69WM1cQg&cad = rja – jkhouw1 2011-04-11 00:14:12

+0

我看了记事本,并且无法制作它的正面或反面。 – PsychoDogg 2011-04-14 03:21:30