Android 带有AlertDialog的ListView无响应OnClickListener,无错误-正在工作
这是账单应用程序的带有AlertDialog的列表视图,单击每个列表项时,该应用程序会弹出支付、编辑或删除选项。然后选择“支付”或“编辑”,然后在重新记录到其他活动之前,它会收集该选项的相关数据。选择“删除”后,将显示另一个AlertDialog以在删除之前进行确认 我让它工作得很好(listView项目是可点击的),但现在什么都没有了。我一遍又一遍地检查我的代码,结果我被难住了。 我相信它最终会变得很小,但就我的一生而言,我无法理解它 有人能告诉我我错过了什么吗Android 带有AlertDialog的ListView无响应OnClickListener,无错误-正在工作,android,Android,这是账单应用程序的带有AlertDialog的列表视图,单击每个列表项时,该应用程序会弹出支付、编辑或删除选项。然后选择“支付”或“编辑”,然后在重新记录到其他活动之前,它会收集该选项的相关数据。选择“删除”后,将显示另一个AlertDialog以在删除之前进行确认 我让它工作得很好(listView项目是可点击的),但现在什么都没有了。我一遍又一遍地检查我的代码,结果我被难住了。 我相信它最终会变得很小,但就我的一生而言,我无法理解它 有人能告诉我我错过了什么吗 final Context c
final Context context = this;
ArrayList<BillArray> bills = db.getBillArray();
final ListView lv = (ListView) findViewById(R.id.list);
lv.setAdapter(new MyCustomBaseAdapter(this, bills));
lv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
Object o = lv.getItemAtPosition(position);
final BillArray fullObject = (BillArray)o;
Toast.makeText(MainActivity.this, "You've chosen: "+" "+ fullObject.getVendor(),
Toast.LENGTH_SHORT).show();
final CharSequence[] items = { "Pay Bill", "Edit", "Delete" };
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Options for:\n"+ fullObject.getVendor());
builder.setIcon(R.drawable.ic_launcher);
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item] + " selected",
Toast.LENGTH_SHORT).show();
if(items[item] == "Pay Bill"){
// LOAD "PAY BILL" PAGE
Intent payBill = new Intent(context, PayBillActivity.class);
payBill.putExtra("id", fullObject.getId());
payBill.putExtra("vendor", fullObject.getVendor());
payBill.putExtra("acct", fullObject.getAcct());
payBill.putExtra("payment", fullObject.getPayment());
payBill.putExtra("mindue", fullObject.getMinDue());
payBill.putExtra("tDue", fullObject.getTdue());
payBill.putExtra("tBal", fullObject.getTbal());
final int result = 1;
startActivityForResult(payBill, result);
}
if(items[item] == "Edit"){
// LOAD "EDIT" PAGE
Intent editBill = new Intent(context, EditBillActivity.class);
editBill.putExtra("id", fullObject.getId());
editBill.putExtra("vendor", fullObject.getVendor());
editBill.putExtra("acct", fullObject.getAcct());
editBill.putExtra("payment", fullObject.getPayment());
editBill.putExtra("typePos", fullObject.getTypePos());
editBill.putExtra("billType", fullObject.getBillType());
editBill.putExtra("billDay", fullObject.getBillDay());
editBill.putExtra("mindue", fullObject.getMinDue());
editBill.putExtra("amtPaid", fullObject.getAmtPaid());
editBill.putExtra("tDue", fullObject.getTdue());
editBill.putExtra("tBal", fullObject.getTbal());
final int result = 1;
startActivityForResult(editBill, result);
}
if(items[item] == "Delete"){
// POP-UP CONFIRMATION DIALOG W/ "DELETE" AND "CANCEL" BUTTON
AlertDialog.Builder delCon = new AlertDialog.Builder(MainActivity.this);
delCon.setTitle("DELETE " + fullObject.getVendor() + "?");
delCon.setPositiveButton("DELETE", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
db.deleteBill(fullObject);
Toast.makeText(getApplicationContext(), "DELETED",
Toast.LENGTH_LONG).show();
Intent intent = getIntent();
finish();
startActivity(intent);
}
});
delCon.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "DELETION CANCELLED",
Toast.LENGTH_LONG).show();
}
});
AlertDialog confirm = delCon.create();
confirm.show();
}
}
});
AlertDialog alert = builder.create();
alert.show();
}
});
final Context=this;
ArrayList bills=db.getBillArray();
最终ListView lv=(ListView)findViewById(R.id.list);
lv.setAdapter(新的MyCustomBaseAdapter(本,账单));
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共视图单击(适配器视图a、视图v、内部位置、长id){
对象o=lv.getItemAtPosition(位置);
最终BillArray fullObject=(BillArray)o;
Toast.makeText(MainActivity.this,“您已选择:”+“”+fullObject.getVendor(),
吐司。长度(短)。show();
final CharSequence[]项目={“付款单”、“编辑”、“删除”};
AlertDialog.Builder=新建AlertDialog.Builder(MainActivity.this);
setTitle(“选项:\n”+fullObject.getVendor());
builder.setIcon(R.drawable.ic_启动器);
setItems(items,新的DialogInterface.OnClickListener()对话框){
公共void onClick(对话框接口对话框,int项){
Toast.makeText(getApplicationContext(),items[item]+“已选定”,
吐司。长度(短)。show();
如果(项目[项目]=“付款单”){
//加载“支付账单”页面
意向付款单=新意向(上下文,PayBillActivity.class);
payBill.putExtra(“id”,fullObject.getId());
payBill.putExtra(“供应商”,fullObject.getVendor());
payBill.putExtra(“acct”,fullObject.getAcct());
payBill.putExtra(“付款”,fullObject.getPayment());
payBill.putExtra(“mindue”,fullObject.getMinDue());
payBill.putExtra(“tDue”,fullObject.getdue());
payBill.putExtra(“tBal”,fullObject.getTbal());
最终int结果=1;
startActivityForResult(账单、结果);
}
如果(项目[项目]=“编辑”){
//加载“编辑”页面
意图editBill=新意图(上下文,EditBillActivity.class);
editBill.putExtra(“id”,fullObject.getId());
editBill.putExtra(“供应商”,fullObject.getVendor());
editBill.putExtra(“acct”,fullObject.getAcct());
editBill.putExtra(“付款”,fullObject.getPayment());
editBill.putExtra(“typePos”,fullObject.getTypePos());
editBill.putExtra(“billType”,fullObject.getBillType());
editBill.putExtra(“billDay”,fullObject.getBillDay());
editBill.putExtra(“mindue”,fullObject.getMinDue());
editBill.putExtra(“amtPaid”,fullObject.getAmtPaid());
editBill.putExtra(“tDue”,fullObject.getdue());
editBill.putExtra(“tBal”,fullObject.getTbal());
最终int结果=1;
startActivityForResult(编辑账单,结果);
}
如果(项目[项目]=“删除”){
//弹出确认对话框W/“删除”和“取消”按钮
AlertDialog.Builder delCon=新建AlertDialog.Builder(MainActivity.this);
delCon.setTitle(“删除”+fullObject.getVendor()+“?”;
delCon.setPositiveButton(“删除”,新建DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
db.deleteBill(fullObject);
Toast.makeText(getApplicationContext(),“已删除”,
Toast.LENGTH_LONG).show();
Intent=getIntent();
完成();
星触觉(意向);
}
});
delCon.setNegativeButton(“取消”,新建DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
Toast.makeText(getApplicationContext(),“删除已取消”,
Toast.LENGTH_LONG).show();
}
});
AlertDialog confirm=delCon.create();
confirm.show();
}
}
});
AlertDialog alert=builder.create();
alert.show();
}
});
经过几天的研究、几次尝试/错误和几次满头头发;)我找到了问题的答案
我尝试过使用:listView.setClickable(true),但没有成功。然后我转到我的listView_layout.xml文件并尝试添加