2016-11-21 92 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

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