Java Android:多选对话框为数组中的元素指定名称
我正在将我的“多重选择复选框”对话框转换为来自公共属性和公共类(这样我就可以从任何地方提取它) 然而,通常当我从一个类中执行某些操作时,我会使用which.ID和which.Name,我想这只是一个普通的多维数组。但是,在这种情况下,我无法理解语法 这是我的自定义类:Java Android:多选对话框为数组中的元素指定名称,java,android,arrays,Java,Android,Arrays,我正在将我的“多重选择复选框”对话框转换为来自公共属性和公共类(这样我就可以从任何地方提取它) 然而,通常当我从一个类中执行某些操作时,我会使用which.ID和which.Name,我想这只是一个普通的多维数组。但是,在这种情况下,我无法理解语法 这是我的自定义类: package com.directenquiries.assessment.tool.Globals; public class clsNameID { public String Name; public S
package com.directenquiries.assessment.tool.Globals;
public class clsNameID {
public String Name;
public String ID;
}
以下是创建阵列的原因:
public static List<clsNameID> assetHelperTypes(){
Log.e("Asset Helper Types:", "Started");
clsNameID AssetDetails = null;
List<clsNameID> mHelperNames = new ArrayList<clsNameID>();
File dbfile = new File(Global.currentDBfull);
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
Cursor f = db.rawQuery("select * from assetobservationtypes", null);
Log.e("Asset Helper Types:", "Cursor run");
if(f.getCount() > 0) {
f.moveToFirst();
while(!f.isAfterLast()) {
AssetDetails = new clsNameID();
AssetDetails.ID = f.getString(f.getColumnIndex("AssetObsID"));
AssetDetails.Name = f.getString(f.getColumnIndex("Observation"));
mHelperNames.add(AssetDetails);
Log.e("Found Item:", AssetDetails.Name);
f.moveToNext();
}
}
f.close();
return mHelperNames;
}
public void addCondition(View view){
List<clsNameID> mHelperNames = DBFunctions.assetHelperTypes();
final List<Integer> mSelectedItems = new ArrayList<Integer>();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("My Title")
.setMultiChoiceItems(mHelperNames.toArray(new CharSequence[mHelperNames.size()]), null,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which, boolean isChecked) {
if (isChecked) {
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
mSelectedItems.remove(Integer
.valueOf(which));
}
}
})
.setPositiveButton("Save", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
//Create onlcick method
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
//Create onlcick method
}
});
builder.show();
}
公共静态列表资产属性(){
Log.e(“资产助手类型:”,“已启动”);
clsNameID AssetDetails=null;
List mHelperNames=new ArrayList();
File dbfile=新文件(Global.currentDBfull);
SQLiteDatabase db=SQLiteDatabase.openOrCreateDatabase(dbfile,null);
游标f=db.rawQuery(“从AssetTobservationTypes中选择*”,null);
Log.e(“资产助手类型:”,“游标运行”);
如果(f.getCount()>0){
f、 moveToFirst();
而(!f.isAfterLast()){
AssetDetails=newclsnameid();
AssetDetails.ID=f.getString(f.getColumnIndex(“AssetObsID”);
AssetDetails.Name=f.getString(f.getColumnIndex(“观察”);
mHelperNames.add(资产详情);
Log.e(“找到的项:”,AssetDetails.Name);
f、 moveToNext();
}
}
f、 close();
返回mHelperName;
}
这里是我尝试使用数组的地方:
public static List<clsNameID> assetHelperTypes(){
Log.e("Asset Helper Types:", "Started");
clsNameID AssetDetails = null;
List<clsNameID> mHelperNames = new ArrayList<clsNameID>();
File dbfile = new File(Global.currentDBfull);
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
Cursor f = db.rawQuery("select * from assetobservationtypes", null);
Log.e("Asset Helper Types:", "Cursor run");
if(f.getCount() > 0) {
f.moveToFirst();
while(!f.isAfterLast()) {
AssetDetails = new clsNameID();
AssetDetails.ID = f.getString(f.getColumnIndex("AssetObsID"));
AssetDetails.Name = f.getString(f.getColumnIndex("Observation"));
mHelperNames.add(AssetDetails);
Log.e("Found Item:", AssetDetails.Name);
f.moveToNext();
}
}
f.close();
return mHelperNames;
}
public void addCondition(View view){
List<clsNameID> mHelperNames = DBFunctions.assetHelperTypes();
final List<Integer> mSelectedItems = new ArrayList<Integer>();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("My Title")
.setMultiChoiceItems(mHelperNames.toArray(new CharSequence[mHelperNames.size()]), null,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which, boolean isChecked) {
if (isChecked) {
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
mSelectedItems.remove(Integer
.valueOf(which));
}
}
})
.setPositiveButton("Save", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
//Create onlcick method
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
//Create onlcick method
}
});
builder.show();
}
public void addCondition(视图){
List mHelperNames=DBFunctions.AssetPerTypes();
最终列表mSelectedItems=newarraylist();
AlertDialog.Builder=新建AlertDialog.Builder(此);
builder.setTitle(“我的标题”)
.setMultiChoiceItems(mHelperNames.toArray(新字符序列[mHelperNames.size()]),null,
新的DialogInterface.OnMultiChoiceClickListener(){
@凌驾
公共void onClick(对话框接口对话框,
int,其中布尔值已检查){
如果(已检查){
mSelectedItems.add(哪个);
}else if(mSelectedItems.contains(which)){
mSelectedItems.remove(整数
.价值(其中);
}
}
})
.setPositiveButton(“保存”,新建DialogInterface.OnClickListener()){
@凌驾
public void onClick(DialogInterface对话框,int-id){
//创建onlcick方法
}
})
.setNegativeButton(“取消”,新建DialogInterface.OnClickListener()){
@凌驾
public void onClick(DialogInterface对话框,int-id){
//创建onlcick方法
}
});
builder.show();
}
我想我真正需要做的是.setMultiChoiceItems(mHelperNames.toArray.Name)(新字符序列[mHelperNames.size()])
但很明显,这是行不通的。如何将名称值分配给setMultiChoiceItems数组
汤姆