Webサーバーに保存されたテキストファイルから読み込まれるスピナーがあります。このテキストファイルの内容は、ArrayListに格納されます。私のアプリは、ユーザーが自分自身の名前をつけてスピナーを更新するアイテムをこのテキストファイルに追加させることになります。私ができることが必要なのは、アイテムが選択されたときにスピナーに何かをさせることです。ユーザーが追加したアイテムに任意の名前を付けることができるので、名前を知っていない場合、その特定のアイテムがスピナーから選択されたときに、アプリは何かできますか?スピナー - 配列から選択された項目を取得する
私は自分のアプリを設定していますので、スピナー項目が "文字列"の場合はこれを行います...しかし、ユーザーが項目自体に名前を付けた場合、これは明らかに機能しません。私は私の質問を説明したことを願っています。あなたがしたいと言うので
public class MainActivity extends AppCompatActivity {
String statusLink = "http://redacted.uk/pmt/status.txt";
String deviceLink = "http://redacted.uk/pmt/devices.txt";
String status;
final String degree = "\u00b0";
ArrayList<String> devicesAL = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
// Set up connection to device.txt on web server
URL deviceUrl = new URL (deviceLink);
URLConnection deviceConn = deviceUrl.openConnection();
deviceConn.setDoOutput(true);
deviceConn.connect();
InputStream dis = deviceConn.getInputStream();
InputStreamReader disr = new InputStreamReader(dis, "UTF-8");
BufferedReader dbr = new BufferedReader(disr);
String deviceLine;
// Set up connection to status.txt on web server
URL statusUrl = new URL(statusLink);
URLConnection statusConn = statusUrl.openConnection();
statusConn.setDoOutput(true);
statusConn.connect();
InputStream sis = statusConn.getInputStream();
InputStreamReader sisr = new InputStreamReader(sis, "UTF-8");
BufferedReader sbr = new BufferedReader(sisr);
String statusLine;
try {
while ((deviceLine = dbr.readLine()) != null) {
//System.out.println(deviceLine);
devicesAL.add(deviceLine);
for (String str : devicesAL) {
System.out.println(str);
}
}
while ((statusLine = sbr.readLine()) != null) {
System.out.println(statusLine);
status = statusLine;
System.out.println("Status = " + status);
TextView output = (TextView) findViewById(R.id.textView);
System.out.println(status);
}
for (String str : devicesAL) {
System.out.println(str);
}
runOnUiThread(new Runnable() {
@Override
public void run() {
//LOAD SPINNER
Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter adp = new ArrayAdapter(MainActivity.this, android.R.layout.simple_spinner_item, devicesAL);
adp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adp);
adp.notifyDataSetChanged();
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
TextView output = (TextView) findViewById(R.id.textView);
if (parent.getItemAtPosition(position).equals("Water Cooler")) {
System.out.println("Water cooler selected");
output.setText(status);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
});
} finally {
sbr.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
}
}
'onItemSelected()'の中で何をしたいのかを教えてください。あなたはどうですか? – zihadrizkyef
ユーザーが項目を追加すると、独自のテキストファイルが作成されます。彼らが「冷蔵庫」という項目を呼び出した場合、fridge.txtが生成され、「冷蔵庫」がスピナーに追加されます。その後、ユーザーがスピナーから「冷蔵庫」を選択すると、fridge.txt内のデータが表示されます。 onItemSelected()では、ユーザーがテキストファイルの名前を指定したので、テキストファイルの名前を指定する方法がわかりません。 – jb2002