mysql傳回值 onitemclick 問題
發表人:
ooaaa
積分: 158
積分: 158
首先先解說一下 我的做法.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 裡面做到呢???
[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
積分: 2432
不太清楚你的問題
你是說如何取得被按下的item嗎?
[sea:javaCode]
lv.setOnItemClickListener(...);
[/sea]
onItemClick的arg2就可以取得被按下的位置
你是說如何取得被按下的item嗎?
[sea:javaCode]
lv.setOnItemClickListener(...);
[/sea]
onItemClick的arg2就可以取得被按下的位置
發表人:
ooaaa
積分: 158
積分: 158
首先我可以從資料庫得到資料,得到的資料先列出一部份(比如:北京,上海,香港...(第一頁面)..(這部份我已做到)),列完之後我 按其中一個...比如按了 "北京" , 然後 就可以得到北京的詳細資料(第二頁面),應該怎樣從第一頁面 的值傳到第二頁面??
大大有範例嗎??
大大有範例嗎??
發表人:
Seachaos
積分: 2432
積分: 2432
你可以用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]
把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
積分: 158
但是我要做到點這個值就傳送這個值,
比如點北京就傳送到第二頁面,第二頁面就會列出北京的資料,
我想請教的是 ANDROID 怎樣知道我是點了北京這個值...再傳送(北京的值) 到第二頁面,大大有其他範例可參考嗎@@?
比如點北京就傳送到第二頁面,第二頁面就會列出北京的資料,
我想請教的是 ANDROID 怎樣知道我是點了北京這個值...再傳送(北京的值) 到第二頁面,大大有其他範例可參考嗎@@?
發表人:
Seachaos
積分: 2432
積分: 2432
那這樣的話你可以考慮用靜態變數或是獨體方法
會比用intent或是資料庫方便
例
[sea:javaCode]
public class Data{
public static String[] array;
}
[/sea]
那這樣就可以直接在A或B使用Data類別裡的變數
Data.array = .....
會比用intent或是資料庫方便
例
[sea:javaCode]
public class Data{
public static String[] array;
}
[/sea]
那這樣就可以直接在A或B使用Data類別裡的變數
Data.array = .....
發表人:
ooaaa
積分: 158
積分: 158
感謝....大大..我想清楚問題了.....
我想問的是...onitemclick 怎樣知道我現在按下哪一個...按了之後怎樣傳(去第二頁面)我按下的這個位置的值.....
求範例...
我想問的是...onitemclick 怎樣知道我現在按下哪一個...按了之後怎樣傳(去第二頁面)我按下的這個位置的值.....
求範例...
發表人:
Seachaos
積分: 2432
積分: 2432
就是用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去對靜態類別的變數或是陣列去做存取
例如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
積分: 158
嗯嗯 大大所想的正是我要的....
但我還要再進一步就是在 onitemclick 裡面
點擊其中一個位置...就能得到這個位置的值...之後傳去第二頁.... 那應該要怎樣做??
但我還要再進一步就是在 onitemclick 裡面
點擊其中一個位置...就能得到這個位置的值...之後傳去第二頁.... 那應該要怎樣做??
發表人:
Seachaos
積分: 2432
積分: 2432
就這樣
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]
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]