Java 将OnClickListener添加到多项选择列表视图
我的应用程序有一个可选择多个元素的多选列表视图。我已经创建了一个SparseBooleanArray来存储是否单击了不同的元素,但是我不确定如何实现OnClickListenerJava 将OnClickListener添加到多项选择列表视图,java,android,listview,onclicklistener,onitemclicklistener,Java,Android,Listview,Onclicklistener,Onitemclicklistener,我的应用程序有一个可选择多个元素的多选列表视图。我已经创建了一个SparseBooleanArray来存储是否单击了不同的元素,但是我不确定如何实现OnClickListener public class ListOfMajors extends Activity { public static boolean aerospace, agricultural, biomed, chem, civil, computer, electrical, physics, environment
public class ListOfMajors extends Activity {
public static boolean aerospace, agricultural, biomed, chem, civil, computer, electrical, physics, environment, industrial, materials, mechanical;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.majorslist);
ListView mylist = (ListView) findViewById(R.id.majorslist);
String[] list={"Aerospace Engineering","Agricultural Engineering","Biomedical Engineering","Chemical Engineering","Civil Engineering",
"Computer Engineering","Electrical Engineering","Engineering Physics","Environmental Engineering","Industrial Engineering",
"Materials Engineering","Mechanical Engineering"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ListOfMajors.this,android.R.layout.simple_list_item_multiple_choice,list);
mylist.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
mylist.setAdapter(adapter);
SparseBooleanArray checkedItems = mylist.getCheckedItemPositions();
if (checkedItems!= null){
for(int i=0; i<checkedItems.size();i++){
if(checkedItems.valueAt(0)){
aerospace = true;
}
if(checkedItems.valueAt(1)){
agricultural = true;
}
if(checkedItems.valueAt(2)){
biomed = true;
}
if(checkedItems.valueAt(3)){
chem = true;
}
if(checkedItems.valueAt(4)){
civil = true;
}
if(checkedItems.valueAt(5)){
computer = true;
}
if(checkedItems.valueAt(6)){
electrical = true;
}
if(checkedItems.valueAt(7)){
physics = true;
}
if(checkedItems.valueAt(8)){
environment = true;
}
if(checkedItems.valueAt(9)){
industrial = true;
}
if(checkedItems.valueAt(10)){
materials = true;
}
if(checkedItems.valueAt(11)){
mechanical = true;
}
}
}
}
}
公共类ListOfMajors扩展活动{
公共航空航天、农业、生物医学、化学、民用、计算机、电气、物理、环境、工业、材料、机械;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.MajorList);
ListView mylist=(ListView)findViewById(R.id.MajorList);
字符串[]列表={“航空航天工程”、“农业工程”、“生物医学工程”、“化学工程”、“土木工程”,
“计算机工程”、“电气工程”、“工程物理”、“环境工程”、“工业工程”,
“材料工程”、“机械工程”};
ArrayAdapter=新的ArrayAdapter(ListOfMajors.this,android.R.layout.simple\u list\u item\u多项选择,list);
mylist.setChoiceMode(ListView.CHOICE\u MODE\u MULTIPLE);
mylist.setAdapter(适配器);
SparseBooleanArray checkedItems=mylist.getCheckedItemPositions();
if(checkedItems!=null){
for(int i=0;i请删除如下可怕的for循环:-)
boolean[]mItemState;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.MajorList);
ListView mylist=(ListView)findViewById(R.id.MajorList);
最终字符串[]列表={“航空航天工程”、“农业工程”,
“生物医学工程”、“化学工程”、“土木工程”,
“计算机工程”、“电气工程”、“工程物理”,
“环境工程”、“工业工程”,
“材料工程”、“机械工程”};
mItemState=新布尔值[list.length]
ArrayAdapter=新的ArrayAdapter(ListOfMajors.this,android.R.layout.simple\u list\u item\u多项选择,list);
mylist.setChoiceMode(ListView.CHOICE\u MODE\u MULTIPLE);
myList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//切换状态
mItemState[位置]=!mItemState[位置];
if(斜接状态[位置])
Log.d(“已选择onItemClick”、“Major”+列表[位置]+”);
其他的
Log.d(“已取消选择主菜单“+列表[位置]+”);
}
});
mylist.setAdapter(适配器);
}
基本上,所有专业都设置为特定索引(从0开始),其选中状态保存在mItemState数组中。每次单击列表中的项目时,状态都会切换
boolean[] mItemState;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.majorslist);
ListView mylist = (ListView) findViewById(R.id.majorslist);
final String[] list={"Aerospace Engineering","Agricultural Engineering",
"Biomedical Engineering","Chemical Engineering","Civil Engineering",
"Computer Engineering","Electrical Engineering","Engineering Physics",
"Environmental Engineering","Industrial Engineering",
"Materials Engineering","Mechanical Engineering"};
mItemState = new boolean[list.length]
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ListOfMajors.this,android.R.layout.simple_list_item_multiple_choice,list);
mylist.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Toggle the state
mItemState[position] = !mItemState[position];
if (mItemState[position])
Log.d("onItemClick","Major " + list[position] + " has been selected");
else
Log.d("onItemClick","Major " + list[position] + " has been deselected");
}
});
mylist.setAdapter(adapter);
}