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