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私のアプリケーションでは、入力用に 2 つの s を持つ custom を使用しようとしていAlertDialogますEditText。適切に機能せず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 に答える