2017-05-07 74 views
0

我的應用程序允許用戶命名和添加項目,然後生成一個文本文件(尚未編碼)。例如,如果他們添加名爲「冰箱」的項目,那麼它會生成fridge.txt。當這個項目被添加時,它也被添加到一個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(); 
} 

}

回答

0

它看起來像你想預測什麼用戶將通過使用if語句輸入 - 即水冷卻器。然後你只寫出'選擇的水冷卻器'。如果它只是打印出用戶在文本框中選擇的內容,只需刪除if語句即可。

System.out.println(parent.getItemAtPosition(position) + " selected"); 
output.setText(status); 
0

您可以使用ArrayList的方法contains來查看用戶在微調器中選擇的項目。就像這樣:

if (devicesAL.contains(parent.getItemAtPosition(position))) { System.out.println(parent.getItemAtPosition(position) + " selected"); output.setText(status); }