【问题标题】:Close alert dialog with Listview with custom adapter使用带有自定义适配器的 Listview 关闭警报对话框
【发布时间】:2021-12-28 03:38:40
【问题描述】:

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

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

我使用 customadapter 使列表视图动态化。

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

    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;
}

这是一个截图供参考

enter image description here

【问题讨论】:

    标签: java android listview


    【解决方案1】:

    您是否能够在您的代码中给出的页脚单击时关闭警报对话框?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多