【问题标题】:Listview color listListview 颜色列表
【发布时间】:2017-04-05 10:41:12
【问题描述】:

我想通过按黑色来点击 Listview 项目(例如颜色列表)来进入另一个活动 ' 我想进入另一个黑色背景的活动)。这就是我现在所拥有的: 公共类 SecondActivity 扩展 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) {

【问题讨论】:

  • 请澄清您的问题。
  • 我想通过按下列表视图上的一个项目来进入一个新的活动。我有一个颜色列表,通过单击我需要的一个项目来进入背景上具有相同颜色的新活动

标签: android listview android-activity parameter-passing


【解决方案1】:

您可以使用enumHashMap 作为颜色名称及其十六进制代码存储,然后通过Intent 将颜色的十六进制代码作为String 传递给第二个Activity

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));
    }
}

别忘了将SecondActivity 添加到AndroidManifest.xml

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 2016-08-18
    • 1970-01-01
    相关资源
    最近更新 更多