将项添加到ListView适配器中的特定列

时间:2017-11-17 09:42:13

标签: java android listview android-adapter

我有一个increment system,我希望onClickDialogAlert的列中保存ListView Adapter的值。

这是我的Adapter

public class VanzatorProduseList extends ArrayAdapter<VanzatorProduse> {

private Activity context;
private SparseBooleanArray selectedListItemsIds;
private List<VanzatorProduse> vanzatorProduseList;


public VanzatorProduseList(Activity context, List<VanzatorProduse> vanzatorProduseList){
    super(context, R.layout.list_produse_vanzator, vanzatorProduseList);
    this.context = context;
    selectedListItemsIds = new SparseBooleanArray();
    this.vanzatorProduseList = vanzatorProduseList;
}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    LayoutInflater inflater = context.getLayoutInflater();

    View listViewItem = inflater.inflate(R.layout.list_produse_vanzator, null, true);

    TextView textViewProdus1 = (TextView) listViewItem.findViewById(R.id.textViewProdus1);
    TextView textViewPret1 = (TextView) listViewItem.findViewById(R.id.textViewPret1);
    final TextView textViewCantitate1 = (TextView) listViewItem.findViewById(R.id.textViewCantitate1);

    final VanzatorProduse vanzatorProduse = vanzatorProduseList.get(position);

    textViewProdus1.setText(vanzatorProduse.getProdus());
    textViewPret1.setText(vanzatorProduse.getPret());


    textViewCantitate1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // custom dialog
            final Dialog dialog = new Dialog(context);
            dialog.setContentView(R.layout.dialog_alert);
            dialog.setTitle("Alege Canitatea");

            // set the custom dialog components - text, image and button
            final Button dialogBtn = (Button) dialog.findViewById(R.id.dialog_btn);
            final ElegantNumberButton elegantNumberButton = (ElegantNumberButton) dialog.findViewById(R.id.elegantNumberButton);

            // if button is clicked, close the custom dialog
            dialogBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                String num = elegantNumberButton.getNumber();
                vanzatorProduseList.add(num);
                    dialog.dismiss();

                }
            });

            dialog.show();
        }
    });

    return listViewItem;
}

以下是我尝试的但是我收到了错误,不知道下一步该做什么:

 String num = elegantNumberButton.getNumber();
                vanzatorProduseList.add(num);

错误:

'add(com.dev.darius.neglije.Vanzator.ListaProduse.VanzatorProduse)' in 'java.util.List' cannot be applied to '(java.lang.String)'

此处我被卡住了,我希望在名为TextView的{​​{1}}中显示。

希望你明白。

3 个答案:

答案 0 :(得分:1)

您正尝试将String类型添加到List<VanzatorProduse> vanzatorProduseList中。您只能将VanzatorProduse类型添加到vanzatorProduseList列表中。所以,问题的原因是:

String num = elegantNumberButton.getNumber();
vanzatorProduseList.add(num);

在您的代码中,您有以下几行:

final VanzatorProduse vanzatorProduse = vanzatorProduseList.get(position);

textViewProdus1.setText(vanzatorProduse.getProdus());
textViewPret1.setText(vanzatorProduse.getPret());

因此,您可能会将num值添加到vanzatorProduse.setProdus(num)或任何其他相应字段中,然后将其添加到列表中:

vanzatorProduseList.add(vanzatorProduse);

答案 1 :(得分:1)

正如@jibrahim先前的回答所述:

  

您正在尝试将String类型添加到List vanzatorProduseList中。您只能将VanzatorProduse类型添加到vanzatorProduseList列表中。所以,问题的原因是:

String num = elegantNumberButton.getNumber();
vanzatorProduseList.add(num);
  

您需要执行以下操作创建自定义类的对象并为其分配值

 String num = elegantNumberButton.getNumber();
    VanzatorProduse numVanProObject = new VanzatorProduse();
    numVanProObject .setNumber(num );
    vanzatorProduseList.add(numVanProObject );
  

但是您的自定义调用应该有方法来解决此类问题

编辑:不要忘记调用notifyDataSetChanged()方法刷新列表

答案 2 :(得分:0)

VanzatorProduse producse = new VanzatorProduse();
producse.setProdus("add value here")
vanzatorProduseList.add(producse);