2017-05-07 95 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); }