0

在我的应用程序中,我有一个Adapter可以扩展的BaseAdapter. 在那个类里面有方法

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

    View view = convertView;
    if (view == null) {
      view = lInflater.inflate(R.layout.childitem, parent, false);
    }

    Product p = getProduct(position);

    ((TextView) view.findViewById(R.id.tvDescr)).setText(p.name);
    ((TextView) view.findViewById(R.id.tvPrice)).setText(p.price + "");
    ((ImageView) view.findViewById(R.id.ivImage)).setImageResource(p.image);

    CheckBox cbBuy = (CheckBox) view.findViewById(R.id.cbBox);

    cbBuy.setOnCheckedChangeListener(myCheckChangList);

    cbBuy.setTag(position);

    cbBuy.setChecked(p.box);
    return view;
}

MainActivity我的应用程序中,我尝试使用 customAlertDialog和两个EditTexts 进行输入。它无法正常工作,并且已获得View用于访问我的资源的建议。

void newItemInput(){

    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    LayoutInflater inflater = this.getLayoutInflater();

    final View v = inflater.inflate(R.layout.dialog_signin, null);

    builder.setView(v);

    builder.setTitle("");
    builder.setMessage("");

    builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int whichButton) {


            EditText item_name = (EditText) v.findViewById(R.id.item_name);
            EditText item_price =(EditText) v.findViewById(R.id.item_price);

            String text = item_name.getText().toString();
            String text_price = item_price.getText().toString();
            int price = Integer.parseInt(text_price);

            // Do something with value!
            products.add(new Product(text, price, R.drawable.unread, false));

            item_name.setText("");
            item_price.setText("");

        }
    });

Dialog现在,当我在以下语句中插入数据以将其用作参数时: products.add(new Product(text, price, R.drawable.unread, false)); ...它的行为方式很奇怪。是否因为View适配器调用和对话框之间的矛盾而发生?如果是这样,可以做些什么来解决它?

4

1 回答 1

0

当您对适配器维护的数据进行任何更改时,您需要调用适配器的notifyDataSetChanged方法。这将通知附加视图数据已更改,它应该自行刷新。您注意到的奇怪行为是因为这是在向列表中添加新项目的过程中调用的,而不是在添加项目之后调用的。

可以在此处找到有关使用适配器的更多信息:http: //developer.android.com/guide/topics/ui/declaring-layout.html#AdapterViews

于 2012-10-10T21:07:51.537 回答