» 首頁 » 討論區 » Android程式設計 »mysql傳回值 onitemclick 問題

mysql傳回值 onitemclick 問題

發表人: ooaaa
積分: 158
發表時間: 2011-07-29 18:10:57
首先先解說一下 我的做法.android <-> php <-> mysql

[sea:javaCode]try{
String link = "http://xxxxx/xxx.php";
String body = getContent(link);
JSONArray array = new JSONArray(body);
for(int i=0; i<array.length(); i++){
HashMap<String, String> map = new HashMap<String, String>();
JSONObject obj = array.getJSONObject(i);
map.put("id", String.valueOf(i));
map.put("aa", "ss:" + obj.getString("abc_name"));
map.put("yy", "dd: " + obj.getString("yy_NAME"));
mylist.add(map);
} [/sea]

上面的程式碼是我得到mysql 的值.....


我應該如何從onitemclick 得到我從mysql 傳回來的值 再進行到另一個介面....
(例如: 我從mysql 裡 挑到 北京 中國 香港,,, 之後listview 到我手機介面...之後我再按北京..再去另一個頁面 得到北京相關資料 這樣...)這個要怎樣在onitemclick 裡面做到呢???
發表人: Seachaos
積分: 2432
發表時間: 2011-08-02 00:17:03
不太清楚你的問題
你是說如何取得被按下的item嗎?


[sea:javaCode]
lv.setOnItemClickListener(...);
[/sea]

onItemClick的arg2就可以取得被按下的位置
發表人: ooaaa
積分: 158
發表時間: 2011-08-14 05:57:19
首先我可以從資料庫得到資料,得到的資料先列出一部份(比如:北京,上海,香港...(第一頁面)..(這部份我已做到)),列完之後我 按其中一個...比如按了 "北京" , 然後 就可以得到北京的詳細資料(第二頁面),應該怎樣從第一頁面 的值傳到第二頁面??

大大有範例嗎??
發表人: Seachaos
積分: 2432
發表時間: 2011-08-14 17:23:24
你可以用new Activity的方式
把value放到intent給第二頁的activity

或是產生新的/修改 ListView來顯示也可以

以下可以修改ListView的內容
[sea:javaCode]
ArrayList<String> all = new ArrayList<String>();
for(int ax=0;ax<20;ax++){
all.add("第二頁的資料");
}
ArrayAdapter<String> arrayData = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,all);

listview.setAdapter(arrayData);
[/sea]
發表人: ooaaa
積分: 158
發表時間: 2011-08-15 00:38:19
但是我要做到點這個值就傳送這個值,
比如點北京就傳送到第二頁面,第二頁面就會列出北京的資料,

我想請教的是 ANDROID 怎樣知道我是點了北京這個值...再傳送(北京的值) 到第二頁面,大大有其他範例可參考嗎@@?
發表人: Seachaos
積分: 2432
發表時間: 2011-08-15 20:38:59
那這樣的話你可以考慮用靜態變數或是獨體方法
會比用intent或是資料庫方便


[sea:javaCode]
public class Data{
public static String[] array;
}
[/sea]

那這樣就可以直接在A或B使用Data類別裡的變數
Data.array = .....
發表人: ooaaa
積分: 158
發表時間: 2011-08-15 23:20:14
感謝....大大..我想清楚問題了.....

我想問的是...onitemclick 怎樣知道我現在按下哪一個...按了之後怎樣傳(去第二頁面)我按下的這個位置的值.....

求範例...
發表人: Seachaos
積分: 2432
發表時間: 2011-08-16 17:03:03
就是用Intent的做法


例如Main要開Main2,且要把value(String)給Main2
[sea:javaCode]
Intent i = new Intent();
Bundle b = new Bundle();
b.putString("value", value);
i.putExtras(b);
i.setClass(this, Main2.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
[/sea]


Main2要接收Main來的value就是在onCreate的地方
[sea:javaCode]
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);

Bundle b = getIntent().getExtras();
if (b != null) {
value = Integer.parseInt(b.getString("value"));
}
....
}
[/sea]

然後就可以用value去對靜態類別的變數或是陣列去做存取
發表人: ooaaa
積分: 158
發表時間: 2011-08-19 15:16:35
嗯嗯 大大所想的正是我要的....

但我還要再進一步就是在 onitemclick 裡面


點擊其中一個位置...就能得到這個位置的值...之後傳去第二頁.... 那應該要怎樣做??
發表人: Seachaos
積分: 2432
發表時間: 2011-08-19 20:33:40
就這樣

Main:
[sea:javaCode]

ArrayList<String> all = new ArrayList<String>(); // 這是你的List

for(int ax=0;ax < 20;ax++)
all.add(Integer.toString(ax)); //產生測試資料

Data2.all = all; // Data2的all是靜態變數
ArrayAdapter<String> arrayData = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,all);

listView.setAdapter(arrayData);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView < ? > arg0, View arg1, int arg2,
long arg3) {
Intent i = new Intent();
Bundle b = new Bundle();
b.putInt("arg2", arg2);
i.putExtras(b);
i.setClass(Main.this, Main2.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
}
});
[/sea]

Main2

[sea:javaCode]
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);

Bundle b = getIntent().getExtras();
int arg2 = Integer.parseInt(b.getString("arg2"));

String = Data.all(arg2);
....
}
[/sea]