如何让数组列表可点击?

时间:2018-10-12 07:23:15

标签: java android listview arraylist

我正在尝试将此列表处理为可点击的。 当我设置一个意图活动时,它不起作用,所以我该如何处理该数组列表中的每个元素。 错误是,当我按此数组列表中的任何元素时,它使我无所适从。

package com.adnan.android.autofix;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.view.menu.MenuView;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.ScrollView;
import android.widget.TextView;

import java.net.Inet4Address;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements {

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

        // Array list content
        ArrayList<String> CarsBrand = new ArrayList<String>();
        CarsBrand.add("Alfa Romeo");
        CarsBrand.add("Audi");
        CarsBrand.add("BMW");
        CarsBrand.add("Brilliance");
        CarsBrand.add("BYD");
        CarsBrand.add("Changan");
        CarsBrand.add("Chery");
        CarsBrand.add("Chevorlet");
        CarsBrand.add("Chrysler");
        ArrayAdapter<String> CarsBrandAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, CarsBrand);

        GridView listView = (GridView) findViewById(R.id.ListCarsBrands);

        listView.setAdapter(CarsBrandAdapter);

        // handling the array list
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent AlfaRomeoIntent = new Intent(MainActivity.this, AlfaRomeo.class);
                startActivity(AlfaRomeoIntent);

                Intent AudiIntent = new Intent(MainActivity.this, com.adnan.android.autofix.Audi.class);
                startActivity(AudiIntent);
            }
        });


    }
}

2 个答案:

答案 0 :(得分:0)

也许您可以像这样将列表项映射到其相应的活动类:

package com.adnan.android.autofix;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.view.menu.MenuView;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.ScrollView;
import android.widget.TextView;

import java.net.Inet4Address;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements {
    HashMap<String, Class> intentMap ;
    ArrayList<String> CarsBrand;

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

        // Array list content
        CarsBrand = new ArrayList<String>();
        CarsBrand.add("Alfa Romeo");
        CarsBrand.add("Audi");
        CarsBrand.add("BMW");
        CarsBrand.add("Brilliance");
        CarsBrand.add("BYD");
        CarsBrand.add("Changan");
        CarsBrand.add("Chery");
        CarsBrand.add("Chevorlet");
        CarsBrand.add("Chrysler");
        ArrayAdapter<String> CarsBrandAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, CarsBrand);

        intentMap = new HashMap<String, Class>()
        {{
        put("Alfa Romeo", AlfaRomeo.class);
        put("Audi", Audi.class);
        // PUT ALL STRING-CLASS PAIRS LIKE THIS

        }};

        GridView listView = (GridView) findViewById(R.id.ListCarsBrands);

        listView.setAdapter(CarsBrandAdapter);

        // handling the array list
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Class selectedIntentClass = intentMap.get(CarsBrand.get(position));
                    Intent intent = new Intent(MainActivity.this, selectedIntentClass);
                    startActivity(intent);
                }
            });
        }
    }

答案 1 :(得分:0)

您可以尝试这样:

package com.adnan.android.autofix;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.view.menu.MenuView;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.ScrollView;
import android.widget.TextView;

import java.net.Inet4Address;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements {

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

        // Array list content
        ArrayList<String> CarsBrand = new ArrayList<String>();
        CarsBrand.add("Alfa Romeo");
        CarsBrand.add("Audi");
        CarsBrand.add("BMW");
        CarsBrand.add("Brilliance");
        CarsBrand.add("BYD");
        CarsBrand.add("Changan");
        CarsBrand.add("Chery");
        CarsBrand.add("Chevorlet");
        CarsBrand.add("Chrysler");
        ArrayAdapter<String> CarsBrandAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, CarsBrand);

        GridView listView = (GridView) findViewById(R.id.ListCarsBrands);

        listView.setAdapter(CarsBrandAdapter);

        // handling the array list
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                final String item = (String)parent.getItemAtPosition(position);
                switch (item) {
                    case "Alfa Romeo":
                        Intent AlfaRomeoIntent = new Intent(MainActivity.this, AlfaRomeo.class);
                        startActivity(AlfaRomeoIntent);
                        break;
                    case "Audi":
                        Intent AudiIntent = new Intent(MainActivity.this, com.adnan.android.autofix.Audi.class);
                        startActivity(AudiIntent);
                        break;
                }
            }
        });


    }
}