台灣最大程式設計社群網站
線上人數
1885
 
會員總數:243175
討論主題:187990
歡迎您免費加入會員
討論區列表 >> Android APP 開發 >> android studio 下拉式選單的內容 怎麼分別去使用?
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
android studio 下拉式選單的內容 怎麼分別去使用?
價值 : 100 QP  點閱數:290 回應數:9

樓主

許假左
門外漢
0 4
100 14
發送站內信



super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner spinner = (Spinner)findViewById(R.id.spinner);
final String[] lunch = {"A", "魯肉飯", "排骨飯", "水餃", "陽春麵"};
ArrayAdapter<String> lunchList = new ArrayAdapter<>(MainActivity.this,
android.R.layout.simple_spinner_dropdown_item,
lunch);
spinner.setAdapter(lunchList);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, "你選的是" + lunch[position], Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {


目前這個功能是 當我選擇A時 會跳出 我選擇A
當我選擇魯肉飯時 會跳出 我選擇魯肉飯

他這種寫法是 不同選項 單一的顯示

但我想把它改成 我選擇A時 會跳出 你好
我選擇魯肉飯時 會跳出 魯肉飯好吃

就是怎麼讓我自己控制 每個選項 做不同的事?


搜尋相關Tags的文章: [ 選單 ] ,
本篇文章發表於2018-05-01 13:03
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

Silent
檢舉此回應
[code]


public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Spinner spinner = (Spinner)findViewById(R.id.spinner);
final String[] lunch = {"A", "魯肉飯", "排骨飯", "水餃", "陽春麵"};

ArrayAdapter<String> ArrayAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_dropdown_item,lunch);
spinner.setAdapter(ArrayAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
process(lunch[position]);
}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});

}


private void process(String item){
if(item.equals("魯肉飯")){
item+="好吃";
}else if(item.equals("水餃")){
item+="好燙";
}
Toast.makeText(getApplicationContext(),item,Toast.LENGTH_SHORT).show();

}
}

[/code]
本篇文章回覆於2018-05-01 16:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

許假左
檢舉此回應
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
pro(lunch[position]); 這裡是用呼叫函數的方式, 那有辦法直接在這裡判斷嗎?
}

private void pro(String item){

if(item.equals("A點")){
user ="api.php" ;
}else if(item.equals("B點")){
user ="api2.php" ;
}
Toast.makeText(getApplicationContext(),user,Toast.LENGTH_SHORT).show();
本篇文章回覆於2018-05-02 14:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

Silent
檢舉此回應
就直接把pro裡面的代碼 移到 onItemSelected 裡面就好了啊...
<pre lang="java">

public void onItemSelected(AdapterView<?> parent, View view, int position, long id){
String item = lunch[position];
String user;
if(item.equals("A點")){
user ="api.php" ;
}else if(item.equals("B點")){
user ="api2.php" ;
}
Toast.makeText(getApplicationContext(),user,Toast.LENGTH_SHORT).show();
}

</pre>
本篇文章回覆於2018-05-02 20:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

Silent
檢舉此回應
看來這裡的排版沒有支援java....
本篇文章回覆於2018-05-02 20:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

許假左
檢舉此回應
順便問一下

if(item.equals("A點")){
user ="api.php" ;
Log.d("error","1");
URL url;
HttpURLConnection urlConnection = null;
try {
//url = new URL("http://200.1.1.70/"+user+"?data=123");
url = new URL("http://200.1.1.70/api.php?data=123"); <<放在外面是能動作的,怎麼放進IF裡 這裡就連不到資料庫了?

urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = urlConnection.getInputStream();
InputStreamReader isw = new InputStreamReader(in);
int data = isw.read();
String strMessage = "";
while (data != -1) {
char current = (char) data;
strMessage += String.valueOf(current);
data = isw.read();
}
Log.i("String = ", strMessage);
//String longitude1 = new JSONArray(strMessage).getJSONObject(0).getString("longitude");
Message message = new Message();
Bundle bundle = new Bundle();
bundle.putString("msg", strMessage);
message.setData(bundle);
handler.sendMessage(message);

} catch (Exception e) {
e.printStackTrace();
} finally {
if (urlConnection != null) {
urlConnection.disconnect();
}
}
本篇文章回覆於2018-05-04 15:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

Silent
檢舉此回應
做http處裡的時候 需要走另一條執行續 需要寫AsyncTask
不過 現在有很多 這類似的套件可以使用
retrofit (官方文件 https://square.github.io/retrofit/ )
OkHttp (官方文件 https://square.github.io/okhttp/ )

這樣可以不用寫 AsyncTask
讀寫資料可以不用寫InputStream、OutputStream

因為這些套件都幫我們用好了


//OkHttp用在你的範例
//------------------------------

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://200.1.1.70/api.php?data=123")
.build();
Response response = client.newCall(request).execute();
String data = response.body().string();//讀取回傳的資料


//------------------------------



retrofit的話會有點難度 不過他的基底也是 OkHttp
retrofit用起來比較好管理
如果你想用retrofit 我之後在包一個簡單專案給你


至於怎麼安裝套件
直接在gradle
dependencies{
//直接加在這堶 看你要用哪一個
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
}
本篇文章回覆於2018-05-04 15:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

許假左
檢舉此回應
我把改成了你給我的

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://200.1.1.70/api.php?data=123")
.build();
Response response = client.newCall(request).execute();
String data = response.body().string(); //但 execute() 和 string() 有誤 還有要加什麼嗎?
本篇文章回覆於2018-05-08 12:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

Silent
檢舉此回應
能不能把錯誤訊息貼出來...?
這樣我也沒辦法知道哪裡有錯...

會不會是你沒有給權限?

在AndroidManifest.xml 加上
<uses-permission android:name="android.permission.INTERNET"/>
本篇文章回覆於2018-05-08 20:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

Silent
檢舉此回應
sorry... android寫法 比較不一樣


本篇文章回覆於2018-05-08 21:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.