单击列表视图项

问题描述 投票:-1回答:1

我的应用程序中有一个ListViewListView中的每个项目都包含一个按钮和项目计数。当点击每个项目中的按钮时,我想显示与EditText的对话框以输入相应项目的新计数并更新具有我从对话EditText字段获得的值的项目。

我创建了对话框以在按钮单击时输入新计数,但无法更新值。 我的适配器

public class MyAdapter extends BaseAdapter {

    @Override
    public int getCount() {
        return planList.size();
    }

    @Override
    public Object getItem(int position) {
        return planList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        final SalesModel db_data = planList.get(position);

        if (convertView == null) {
            convertView = View.inflate(getApplicationContext(), R.layout.return_confirm, null);
        }

        TextView name = (TextView) convertView.findViewById(R.id.name);
        final TextView stock = (TextView) convertView.findViewById(R.id.stock);
        TextView amount = (TextView) convertView.findViewById(R.id.amount);
        ImageView minus = (ImageView) convertView.findViewById(R.id.minus);

        Double count = Double.parseDouble(db_data.getStock());
        Double price = Double.parseDouble(db_data.getSprice());
        Double s_price = count*price;
        String set_amount = s_price.toString();

        name.setText(db_data.getName());
        stock.setText(db_data.getStock());
        amount.setText(set_amount);

        minus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                stock_return = ShowDialogue();

                Double n_stock = Double.parseDouble(db_data.getStock())-Double.parseDouble(stock_return);

                stock.setText(n_stock.toString());
            }
        });

        return convertView;
    }
}

功能显示对话

public String ShowDialogue(){

    String stk_val;
    stock_return = "0.0";
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    final AlertDialog dialog = builder.create();
    dialog.setCancelable(false);
    LayoutInflater inflater = (LayoutInflater) this.getSystemService(this.LAYOUT_INFLATER_SERVICE);
    View dialogLayout = inflater.inflate(R.layout.popup_reminder, null);
    final EditText stk = (EditText)dialogLayout.findViewById(R.id.stock);
    Button ok = (Button)dialogLayout.findViewById(R.id.later );
    Button close = (Button)dialogLayout.findViewById(R.id.close);
    close.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {

            dialog.dismiss();
        }
    });

    ok.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {

            if(stk.getText().toString().trim().isEmpty()){
                stk.setError("Enter quantity");
            }
            else {
                stock_return = stk.getText().toString().trim();
            }
        }
    });

    dialog.setView(dialogLayout,0,0,0,0);
    dialog.show();

    return stock_return;

}
android listview
1个回答
1
投票

你做错了什么。在输入ok按钮之前,对话框无法返回。

试试这样:

minus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                stock_return = ShowDialogue(this, position);

            }
        });

像这样改变对话框。

public void ShowDialogue(MyAdapter myAdapter, int position){

    String stk_val;
    stock_return = "0.0";
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    final AlertDialog dialog = builder.create();
    dialog.setCancelable(false);
    LayoutInflater inflater = (LayoutInflater) this.getSystemService(this.LAYOUT_INFLATER_SERVICE);
    View dialogLayout = inflater.inflate(R.layout.popup_reminder, null);
    final EditText stk = (EditText)dialogLayout.findViewById(R.id.stock);
    Button ok = (Button)dialogLayout.findViewById(R.id.later );
    Button close = (Button)dialogLayout.findViewById(R.id.close);
    close.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {

            dialog.dismiss();
        }
    });

    ok.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {

            if(stk.getText().toString().trim().isEmpty()){
                stk.setError("Enter quantity");
            }
            else {

                planList.get(position).setStock(stk.getText().toString().trim());
                dialog.dismiss();
                myAdapter.notifyDataSetChanged();
            }
        }
    });

    dialog.setView(dialogLayout,0,0,0,0);
    dialog.show();

}
© www.soinside.com 2019 - 2024. All rights reserved.