2016-11-21 89 views
-1

我想要通過點擊Listview項目(例如顏色列表)通過按黑色'我想要到另一個黑色背景的活動'來到另一個活動。這就是我現在所擁有的: public class SecondActivity extends AppCompatActivity {ArrayList allColors;列表查看顏色列表

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

    final ListView listView=(ListView)findViewById(R.id.colorList); 
    allColors= new ArrayList<>(); 
    allColors.add("Blue"); 
    allColors.add("Yellow"); 
    allColors.add("Green"); 
    allColors.add("Red"); 
    allColors.add("Grey"); 
    allColors.add("Black"); 
    allColors.add("Orange"); 
    allColors.add("Purple"); 

    ArrayAdapter<String>myAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,android.R.id.text1,allColors); 
    listView.setAdapter(myAdapter); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
+0

請澄清您的問題。 –

+0

我想通過按列表視圖上的項目來獲得新的活動。我有一個顏色列表,點擊我需要在背景上使用相同顏色的新活動中的一個項目 –

回答

0

可以使用enumHashMap爲顏色名稱和其十六進制代碼存儲,然後通過顏色的十六進制代碼作爲String爲第二Activity經由Intent

MainActivity.java

public class MainActivity extends AppCompatActivity { 

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

     List<String> allColors= new ArrayList<>(8); 
     allColors.add(Color.Blue.toString()); 
     allColors.add(Color.Yellow.toString()); 
     allColors.add(Color.Green.toString()); 
     allColors.add(Color.Red.toString()); 
     allColors.add(Color.Grey.toString()); 
     allColors.add(Color.Black.toString()); 
     allColors.add(Color.Orange.toString()); 
     allColors.add(Color.Purple.toString()); 

     final ListView listView = (ListView)findViewById(R.id.colorList); 

     ArrayAdapter<String> myAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1, android.R.id.text1, allColors); 
     listView.setAdapter(myAdapter); 
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Intent intent = new Intent(MainActivity.this, SecondActivity.class); 
       intent.putExtra("BackgroundColor", Color.fromString(((TextView)view).getText().toString()).getHexCode()); 
       startActivity(intent); 
      } 
     }); 

    } 

    public enum Color { 
     Blue("#0000FF"), 
     Yellow("#FFFF00"), 
     Green("#00FF00"), 
     Red("#FF0000"), 
     Grey("#808080"), 
     Black("#000000"), 
     Orange("#FFA500"), 
     Purple("#800080"); 

     Color(String color) { 
      this.colourCode = color; 
     } 

     final String colourCode; 
     private final static Map<Color, String> colorNames = new HashMap<>(8); 


     static { 
      colorNames.put(Blue, "Blue"); 
      colorNames.put(Yellow, "Yellow"); 
      colorNames.put(Green, "Green"); 
      colorNames.put(Red, "Red"); 
      colorNames.put(Grey, "Grey"); 
      colorNames.put(Black, "Black"); 
      colorNames.put(Orange, "Orange"); 
      colorNames.put(Purple, "Purple"); 
     } 

     public String getHexCode() { 
      return colourCode; 
     } 

     @Override 
     public String toString() { 
      return colorNames.get(this); 
     } 

     public static Color fromString(String name) { 
      for (Color key : colorNames.keySet()) { 
       if (colorNames.get(key).equals(name)) { 
        return key; 
       } 
      } 
      return null; 
     } 
    } 
} 

SecondActivity.java

public class SecondActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_second); 
     String backgroundColor = "#FFFFFF"; 
     Intent intent = getIntent(); 
     if (intent != null) { 
      backgroundColor = intent.getStringExtra("BackgroundColor"); 
     } 
     getWindow().getDecorView().setBackgroundColor(Color.parseColor(backgroundColor)); 
    } 
} 

並且不要忘記添加SecondActivityAndroidManifest.xml

+0

非常感謝! /// –

+0

所以,如果有幫助,你可以接受回答:) –