使用带有自定义适配器的Listview关闭警报对话框



我正在开发一个简单的发票应用程序,该应用程序包含选择产品等方法。我有一个问题,我使用自定义适配器到listview来查看我的产品详细信息,因为我使用了自定义适配器listview onclicklistner不起作用。

我只需要关闭警报对话框,同时单击并从列表视图中选择一个产品。

我使用customadapter使listview成为动态的。

这是我的警报对话框代码,

public void selectProduct(View v) {
showProducts();
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
LayoutInflater inflater = getLayoutInflater();
View convertView = (View) inflater.inflate(R.layout.select_product_list, null);
alertDialog.setView(convertView);
ArrayList<String> categoryListReverce = reverse(categoryList);
categorySpinner = (Spinner) convertView.findViewById(R.id.spinner1);
ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.orderlist_spinner_row, categoryListReverce);
arrayAdapter.setDropDownViewResource(R.layout.orderlist_spinner_row);
categorySpinner.setAdapter(arrayAdapter);
categorySpinner.setOnItemSelectedListener((AdapterView.OnItemSelectedListener) this);
ListView lv = (ListView) convertView.findViewById(R.id.listView);
listAdapter = new CustomNewInvoiceAdapter(this, R.layout.batch_sales_list, new ArrayList<OrderListModel>());R.id.productprice});
lv.setAdapter(listAdapter);
textPartySearch = (EditText) convertView.findViewById(R.id.searchContainer);
textContactSearch = (EditText) convertView.findViewById(R.id.contactno);
footer = (LinearLayout) convertView.findViewById(R.id.footer1);
getCashPartyName = (TextView) convertView.findViewById(R.id.partyname);
getCashPartyContact = (TextView) convertView.findViewById(R.id.contactno);
submit = (Button) convertView.findViewById(R.id.submit);
final AlertDialog ad = alertDialog.show();
textPartySearch.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
adapter2.getFilter()
.filter(textPartySearch.getText().toString());
}
});
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
}
});
footer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ad.dismiss();
}
});
}

这是我的customAdapter getView,

@Override
public View getView(int position, View convertView, ViewGroup parent)  {
View row = convertView;
CustomNewInvoiceAdapter.Holder holder = null;
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
holder = new  CustomNewInvoiceAdapter.Holder();
holder.pack = items.get(position);
if (items.get(position).getType().equals("header")) {
row = inflater.inflate(headerLayoutResourceId, parent, false);
holder.itemName = row.findViewById(R.id.productName);
holder.itemName.setText(String.valueOf(holder.pack.getItemName()));
row.setTag(holder);
} else {
row = inflater.inflate(itemLayoutResourceId, parent, false);
holder.itemCode = row.findViewById(R.id.itemCode);
holder.itemName = row.findViewById(R.id.productName);
holder.CostTxt = row.findViewById(R.id.ed_cost);
holder.ItemDis = row.findViewById(R.id.ed_ItemDis);
holder.unitBtn = row.findViewById(R.id.unitbtn);
holder.stockTxt = row.findViewById(R.id.stock);
clickUnitBtn(holder);
if(Constants.isPriceEdit){
holder.price = row.findViewById(R.id.productprice);
holder.price.setClickable(false);
holder.price.setFocusable(false);
holder.price.setCursorVisible(false);
}else {
holder.price = row.findViewById(R.id.productprice);
holder.price.setSelectAllOnFocus(true);
}
row.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
}
});
row.setTag(holder);
setupItem(holder);
}
return row;
}

这里有一张截图供参考

在此处输入图像描述

您是否能够按照代码中给定的方式取消页脚单击上的警报对话框?

最新更新