【问题标题】:Add item to a specific column in ListView Adapter将项目添加到 ListView 适配器中的特定列
【发布时间】:2017-11-17 09:42:13
【问题描述】:

我有一个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 中显示,称为 textViewCantitate1

希望你能理解。

【问题讨论】:

  • 您正在尝试在 ListVanzatorProduse 元素中添加 String。它不能工作,你必须在该列表中添加一个VanzatorProduse 对象

标签: java android listview android-adapter


【解决方案1】:

您正在尝试将String 类型添加到List&lt;VanzatorProduse&gt; 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);

【讨论】:

  • 您不能只添加它。您必须将此信息放在 VanzatorProduse 对象中并将此对象添加到列表中
  • @pleft 肯定和@Clau 应该知道将num 值分配给VanzatorProduse 的确切位置
【解决方案2】:

正如@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() 方法来刷新列表

【讨论】:

  • 您还应该调用 notifyDataSetChanged() 来刷新列表视图。
  • 对不起,我是 java 新手。但是从这里我如何在我的 TetxView(textviewcantitate) 中显示结果?像这些文本视图(textviewprodust,textviewpret)
  • 您可以简单地在关闭textviewcantitate.setText(String.valueOf(num)) 中执行此操作;但如果我没有错,您要求更新列表,这可以通过调用 yourListAdapter.notifyDataSetChanged() 轻松完成
【解决方案3】:
VanzatorProduse producse = new VanzatorProduse();
producse.setProdus("add value here")
vanzatorProduseList.add(producse);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多