2011-04-10 127 views
0

我有一個問題,當我去下一個活動,並通過數據意圖時,它只顯示我關閉數據庫的最後一項,而不是點擊的項目信息。意圖數據沒有顯示正確

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

    } 
}); 
} 

}`

什麼想法?

回答

0

您正在遍歷遊標並將值分配給字符串。當它完成迭代時,你的字符串只包含你分配的最後一個值,然後你通過它。

您應該將您的列表綁定到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