Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的AlertDialog在适配器中多次显示_C#_Android_Xamarin.android_Android Alertdialog - Fatal编程技术网

C# 我的AlertDialog在适配器中多次显示

C# 我的AlertDialog在适配器中多次显示,c#,android,xamarin.android,android-alertdialog,C#,Android,Xamarin.android,Android Alertdialog,尝试在适配器中显示AlertDialog时出现问题。当我想删除一篇文章(每个类别的第一篇文章)或试图删除一个类别(确切地说,当我删除第二个类别时)时,会显示很多次 这是我的密码 ArticlesConfiguration.cs 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 使用Android.App; 使用Android.Content; 使用Android.OS; 使用Android.Runtime; 使用Android.

尝试在适配器中显示AlertDialog时出现问题。当我想删除一篇文章(每个类别的第一篇文章)或试图删除一个类别(确切地说,当我删除第二个类别时)时,会显示很多次

这是我的密码

ArticlesConfiguration.cs
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用Android.App;
使用Android.Content;
使用Android.OS;
使用Android.Runtime;
使用Android.Util;
使用Android.Views;
使用Android.Widget;
使用SymaMobile.Core.Models;
使用Vici.CoolStorage;
使用SymaMobile.Droid.Adapters;
使用Android.Database;
名称空间SymaMobile.Droid
{
公共类文章配置:片段
{
私有ListView listViewCatgArticles;
private ListCategoriateArticlesConfigAdapter Adapter adapterCatConfig;
专用ListArticleConfigAdapter适配器项目;
私人名单;
私人物品清单;
私人按钮一个外套标签;
私有GridView gridArticles;
私人物品配置艺术;
私有文本视图代码栏;
私有文本视图诽谤;
私有类别ArticlesConfig categorieActuelle;
私人物品;
私人CSList catglist;
私有微调器分类;
私人纺纱机文章;
创建视图上的公共覆盖视图(布局、充气机、视图组容器、捆绑包保存状态)
{
视图v=充气机。充气(Resource.Layout.fragment\u configuration\u articles,container,false);
listViewCatgArticles=v.FindViewById(Resource.Id.lv\u articles\u fragment\u configuration\u articles);
ajouterArticle=v.findviewbyd(Resource.Id.bt\u ajouter\u fragment\u configuration\u articles);
gridArticles=v.findviewbyd(Resource.Id.gv\u articles\u fragment\u articles\u配置);
listCatgArticles=CategoriesArticlesConfig.List().ToList();
adapterCatConfig=新的ListCategateArticlesConfigAdapter(活动,listCatgArticles);
listViewCatgArticles.Adapter=adapterCatConfig;
点击+=点击;
listViewCatgArticles.ItemClick+=listViewCatgArticles\u ItemClick;
gridArticles.ItemClick+=gridArticles\u ItemClick;
返回v;
}
作废gridArticles\u ItemClick(对象发送者,AdapterView.ItemClickEventArgs e)
{
if(e.Position==gridArticles.Count-1)
{
Android.Util.Log.Error(“位置网格”,“e.Position”);
Android.Util.Log.Error(“网格计数”,“+gridArticles.Count”);
AlertDialog.Builder=新建AlertDialog.Builder(活动);
builder.SetTitle(Resource.String.ajouter\u categorie);
LayoutInflater充气机=活动。LayoutInflater;
视图v=充气机.充气(Resource.Layout.alertdialog\u AJAOUR\u article\u配置,空);
codeBarre=v.FindViewById(Resource.Id.ed\u code\u barre\u alert\u dialog\u ajouter\u article\u配置);
libelle=v.findviewbyd(Resource.Id.tv\u nom\u article\u alert\u dialog\u ajouter\u article\u配置);
categorie=v.findviewbyd(Resource.Id.sp\u categories\u alert\u dialog\u ajouter\u article\u配置);
articles=v.findviewbyd(Resource.Id.sp\u articles\u alert\u dialog\u ajouter\u article\u配置);
var adapter=newarrayadapter(Activity,Android.Resource.Layout.SimpleSpinnerDropDownItem);
catglist=CategoriesArticles.List();
for(int i=0;i2)
{
articleActuelle=Articles.ReadFirst(“CodeBarre=”“+CodeBarre.Text+”);
if(articleActuelle!=null)
{
libelle.Text=articleActuelle.libelle;
}
其他的
{
诽谤。Text=“”;
}
}
}
void listViewCatgArticles_ItemClick(对象发送者,AdapterView.ItemClickEventArgs e)
{
categorieActuelle=CategoriesArticlesConfig.Read((int)adapterCatConfig.GetItemId(e.Position));
listArticles=categorieActuelle.ArticlesConfig.ToList();
adapterArticles=新的ListArticleConfigAdapter(活动,listArticles);
gridArticles.Adapter=适配器粒子;
}
void ajouterArticle\u单击(对象发送者,事件参数e)
{
AlertDialog.Builder=新建AlertDialog.Builder(活动);
builder.SetTitle(Resource.String.ajouter\u categorie);
LayoutInflater充气机=活动。LayoutInflater;
视图v=i
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;
using SymaMobile.Core.Models;
using Vici.CoolStorage;
using SymaMobile.Droid.Adapters;
using Android.Database;

namespace SymaMobile.Droid
{
public class ArticlesConfiguration : Fragment
{
    private ListView listViewCatgArticles;
    private ListCategorieArticlesConfigAdapter adapterCatConfig;
    private ListArticleConfigAdapter adapterArticles;
    private List<CategoriesArticlesConfig> listCatgArticles;
    private List<ArticlesConfig> listArticles;
    private Button ajouterArticle;
    private GridView gridArticles;
    private ArticlesConfig art;
    private TextView codeBarre;
    private TextView libelle;
    private CategoriesArticlesConfig categorieActuelle;
    private Articles articleActuelle;
    private CSList<CategoriesArticles, int> catglist;
    private Spinner categorie;
    private Spinner articles;


    public override View OnCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        View v = inflater.Inflate(Resource.Layout.fragment_configuration_articles, container, false);

        listViewCatgArticles = v.FindViewById<ListView>(Resource.Id.lv_articles_fragment_configuration_articles);
        ajouterArticle = v.FindViewById<Button>(Resource.Id.bt_ajouter_fragment_configuration_articles);
        gridArticles = v.FindViewById<GridView>(Resource.Id.gv_articles_fragment_articles_configuration);

        listCatgArticles = CategoriesArticlesConfig.List().ToList<CategoriesArticlesConfig>();
        adapterCatConfig = new ListCategorieArticlesConfigAdapter(Activity, listCatgArticles);
        listViewCatgArticles.Adapter = adapterCatConfig;

        ajouterArticle.Click += ajouterArticle_Click;
        listViewCatgArticles.ItemClick += listViewCatgArticles_ItemClick;

        gridArticles.ItemClick += gridArticles_ItemClick;
        return v;
    }

    void gridArticles_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
    {
        if (e.Position == gridArticles.Count-1)
        {
            Android.Util.Log.Error("Position grid", ""+e.Position);
            Android.Util.Log.Error("grid Count", "" + gridArticles.Count);

            AlertDialog.Builder builder = new AlertDialog.Builder(Activity);
            builder.SetTitle(Resource.String.ajouter_categorie);
            LayoutInflater inflater = Activity.LayoutInflater;
            View v = inflater.Inflate(Resource.Layout.alertdialog_ajouter_article_configuration, null);

            codeBarre = v.FindViewById<TextView>(Resource.Id.ed_code_barre_alert_dialog_ajouter_article_configuration);
            libelle = v.FindViewById<TextView>(Resource.Id.tv_nom_article_alert_dialog_ajouter_article_configuration);
            categorie = v.FindViewById<Spinner>(Resource.Id.sp_categories_alert_dialog_ajouter_article_configuration);
            articles = v.FindViewById<Spinner>(Resource.Id.sp_articles_alert_dialog_ajouter_article_configuration);

            var adapter = new ArrayAdapter<string>(Activity, Android.Resource.Layout.SimpleSpinnerDropDownItem);

            catglist = CategoriesArticles.List();
            for (int i = 0; i < catglist.Count; i++)
            {
                adapter.Add(catglist[i].Nom);
            }
            categorie.ItemSelected += categorie_ItemSelected;
            categorie.Adapter = adapter;

            codeBarre.TextChanged+=codeBarre_TextChanged;

            builder.SetPositiveButton(Resource.String.ajouter, delegate
            {
                if (articleActuelle != null && categorieActuelle != null)
                {
                    ArticlesConfig a = ArticlesConfig.New();
                    a.Article = articleActuelle;
                    a.CategorieArticles = categorieActuelle;
                    a.Save();
                    listArticles.Add(a);
                    adapterArticles.NotifyDataSetChanged();
                }
            });

            builder.SetNegativeButton(Resource.String.annuler, (Android.Content.IDialogInterfaceOnClickListener)null);
            builder.SetView(v);
            builder.Show();
        }
    }

    void categorie_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
    {
        List<Articles> a = catglist[e.Position].Articles.ToList<Articles>();

        var adapter = new ArrayAdapter<string>(Activity, Android.Resource.Layout.SimpleSpinnerDropDownItem);

        for (int i = 0; i < a.Count; i++)
        {
            adapter.Add(a[i].Libelle);
        }
        articles.Adapter = adapter;

    }

    private void codeBarre_TextChanged(object sender, Android.Text.TextChangedEventArgs e)
    {
        if (codeBarre.Text.Length > 2)
        {
            articleActuelle = Articles.ReadFirst("CodeBarre ='" + codeBarre.Text + "'");
            if (articleActuelle != null)
            {
                libelle.Text = articleActuelle.Libelle;
            }
            else
            {
                libelle.Text = "";
            }
        }
    }

    void listViewCatgArticles_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
    {
        categorieActuelle = CategoriesArticlesConfig.Read((int)adapterCatConfig.GetItemId(e.Position));
        listArticles = categorieActuelle.ArticlesConfig.ToList();
        adapterArticles = new ListArticleConfigAdapter(Activity, listArticles);
        gridArticles.Adapter = adapterArticles;
    }

    void ajouterArticle_Click(object sender, EventArgs e)
    {
        AlertDialog.Builder builder = new AlertDialog.Builder(Activity);
        builder.SetTitle(Resource.String.ajouter_categorie);
        LayoutInflater inflater = Activity.LayoutInflater;
        View v = inflater.Inflate(Resource.Layout.alertdialog_ajouter_categorie_article_configuration, null);

        TextView nom = v.FindViewById<TextView>(Resource.Id.ed_nom_ajouter_categorie_fragment_article_configuration);

        builder.SetPositiveButton(Resource.String.ajouter, delegate
        {
            if (nom.Text.Length > 0)
            {
                CategoriesArticlesConfig c = CategoriesArticlesConfig.New();
                c.Nom = nom.Text;
                c.Save();

                c = CategoriesArticlesConfig.ReadFirst("CategorieArticlesConfigID=" + c.CategorieArticlesConfigID);
                listCatgArticles.Add(c);
                adapterCatConfig.NotifyDataSetChanged();
            }
        });

        builder.SetNegativeButton(Resource.String.annuler, (Android.Content.IDialogInterfaceOnClickListener)null);
        builder.SetView(v);
        builder.Show();
    }
}
}
namespace SymaMobile.Droid.Adapters
{
class ListCategorieArticlesConfigAdapter : BaseAdapter
{

    private List<CategoriesArticlesConfig> list;
    private int indice;
    private Activity Activity;

    public ListCategorieArticlesConfigAdapter(Android.App.Activity Activity, List<CategoriesArticlesConfig> list)
        : base()
    {
        this.Activity = Activity;
        this.list = list;
    }

    public override int Count
    {
        get { return list.Count; }
    }

    public override Java.Lang.Object GetItem(int position)
    {
        return null;
    }

    public override long GetItemId(int position)
    {
        return list[position].CategorieArticlesConfigID;
    }

    public override Android.Views.View GetView(int position, Android.Views.View convertView, Android.Views.ViewGroup parent)
    {
        var view = (convertView ??
          Activity.LayoutInflater.Inflate(
              Resource.Layout.list_item_categories_articles_configuration,
              parent,
              false)) as LinearLayout;

        var nom = view.FindViewById(Resource.Id.tv_nom_list_item_categories_articles_configuration) as TextView;
        var modify = view.FindViewById(Resource.Id.bt_modify_list_categories_articles_configuration) as Button;
        var delete = view.FindViewById(Resource.Id.bt_delete_list_categories_articles_configuration) as Button;

        modify.Click += modify_Click;
        indice = position;

        delete.Click +=delete_Click;

        nom.Text = list[position].Nom;

        return view;
    }

    void delete_Click(object sender, EventArgs e)
    {
        Android.App.AlertDialog.Builder builder = new Android.App.AlertDialog.Builder(Activity);
        builder.SetMessage(Resource.String.msg_supprimer);
        builder.SetPositiveButton(Resource.String.oui, delegate
        {
            CSDatabase.ExecuteNonQuery("DELETE FROM CategoriesArticlesConfig WHERE CategorieArticlesConfigID=" + list[indice].CategorieArticlesConfigID);
            list.RemoveAt(indice);
            NotifyDataSetChanged();
        });
        builder.SetNegativeButton(Resource.String.non, (Android.Content.IDialogInterfaceOnClickListener)null);
        builder.Show();
    }

    void modify_Click(object sender, EventArgs e)
    {
        AlertDialog.Builder builder = new AlertDialog.Builder(Activity);
        builder.SetTitle(Resource.String.modifier_categorie);
        LayoutInflater inflater = Activity.LayoutInflater;
        View v = inflater.Inflate(Resource.Layout.alertdialog_ajouter_categorie_article_configuration, null);

        TextView _nom = v.FindViewById<TextView>(Resource.Id.ed_nom_ajouter_categorie_fragment_article_configuration);

        _nom.Text = list[indice].Nom;



        builder.SetNegativeButton(Resource.String.annuler, (Android.Content.IDialogInterfaceOnClickListener)null);
        builder.SetPositiveButton(Resource.String.modifier, delegate {
            CategoriesArticlesConfig c = CategoriesArticlesConfig.ReadFirst("CategorieArticlesConfigID=" + list[indice].CategorieArticlesConfigID);
            if (c != null)
            {
                c.Nom = _nom.Text;
                c.Save();
            }
            list[indice].Nom = _nom.Text;
            NotifyDataSetChanged();
        });
        builder.SetView(v);
        builder.Show();
    }
}
}
namespace SymaMobile.Droid.Adapters
{
class ListArticleConfigAdapter : BaseAdapter
{
    Activity context;
    private List<ArticlesConfig> liste;
    private int indice;

    public ListArticleConfigAdapter(Activity context, List<ArticlesConfig> liste)
        : base()
    {
        this.context = context;
        this.liste = liste;
    }

    public override int Count
    {
        get { return liste.Count+1; }
    }

    public override long GetItemId(int position)
    {
        return position;
    }

    public override Android.Views.View GetView(int position, View convertView, ViewGroup parent)
    {
        var view = (convertView ??
          context.LayoutInflater.Inflate(
              Resource.Layout.list_item_article_configuration,
              parent,
              false)) as LinearLayout;

        var image = view.FindViewById(Resource.Id.iv_list_item_article_configuration) as ImageView;
        var nom = view.FindViewById(Resource.Id.tv_nom_article_list_item_article_configuration) as TextView;
        var supprimer = view.FindViewById(Resource.Id.bt_delete_list_item_article_configuration) as Button;

        Android.Util.Log.Error("Position : ", ""+position+" List Count : "+liste.Count);

        if (position < liste.Count)
        {
            nom.Text = liste[position].Article.Libelle;
            image.SetImageBitmap(Tools.ImageTools.StringToBitMap(liste[position].Article.Image));
        }
        else
        {
            nom.Text = context.Resources.GetString(Resource.String.ajouter);
            image.SetImageResource(Resource.Drawable.add128x128);
            supprimer.Visibility = ViewStates.Invisible;
        }
        indice = position;

        supprimer.Click += supprimer_Click;

        return view;
    }

    void supprimer_Click(object sender, EventArgs e)
    {
        Android.App.AlertDialog.Builder builder = new Android.App.AlertDialog.Builder(context);
        builder.SetMessage(Resource.String.msg_supprimer);
        builder.SetPositiveButton(Resource.String.oui, delegate
        {
            CSDatabase.ExecuteNonQuery("DELETE FROM ArticlesConfig WHERE ArticlesConfigID=" + liste[indice].ArticlesConfigID);
            liste.RemoveAt(indice);
            NotifyDataSetChanged();
        });
        builder.SetNegativeButton(Resource.String.non, (Android.Content.IDialogInterfaceOnClickListener)null);
        builder.Show();

    }

    public override Java.Lang.Object GetItem(int position)
    {
        return position;
    }
}
}
@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    progressDialog.dismiss();
} 


@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed(); 
    System.exit(0);
}
class ListCategorieArticlesConfigAdapter : BaseAdapter
{

    private List<CategoriesArticlesConfig> list;
    private Activity Activity;

    public ListCategorieArticlesConfigAdapter(Android.App.Activity Activity, List<CategoriesArticlesConfig> list)
        : base()
    {
        this.Activity = Activity;
        this.list = list;
    }

    public override int Count
    {
        get { return list.Count; }
    }

    public override Java.Lang.Object GetItem(int position)
    {
        return null;
    }

    public override long GetItemId(int position)
    {
        return list[position].CategorieArticlesConfigID;
    }



    public override Android.Views.View GetView(int position, Android.Views.View convertView,
        Android.Views.ViewGroup parent)
    {
        ViewHolder vh;

        var view = convertView;
        if (view == null)
        {
            view = Activity.LayoutInflater.Inflate(Resource.Layout.list_item_categories_articles_configuration,
                false);
            vh = new ViewHolder(list);
            vh.Initialize(view);
            view.Tag = vh;
        }
        vh = view.Tag as ViewHolder;
        vh.Bind(position);

        return view;
    }

    private class ViewHolder : Java.Lang.Object
    {
        private TextView _nom;
        private Button _modify;
        private Button _delete;
        private List<CategoriesArticlesConfig> _list;

        public ViewHolder(List<CategoriesArticlesConfig> list)
        {
            _list = list;
        }

        public void Initialize(View view)
        {
            _nom = view.FindViewById<TextView>(Resource.Id.tv_nom_list_item_categories_articles_configuration);
            _modify = view.FindViewById<Button>(Resource.Id.bt_modify_list_categories_articles_configuration);
            _delete = view.FindViewById<Button>(Resource.Id.bt_delete_list_categories_articles_configuration);
        }

        public void Bind(int position)
        {
            _modify.Tag = position;

            _modify.Click += modify_Click;

            _delete.Click += delete_Click;

            _nom.Text = _list[position].Nom;
        }

        void delete_Click(object sender, EventArgs e)
        {
            var indice = (int)(((View)sender).Tag);
            Android.App.AlertDialog.Builder builder = new Android.App.AlertDialog.Builder(Activity);
            builder.SetMessage(Resource.String.msg_supprimer);
            builder.SetPositiveButton(Resource.String.oui, delegate
            {
                CSDatabase.ExecuteNonQuery("DELETE FROM CategoriesArticlesConfig WHERE CategorieArticlesConfigID=" + list[indice].CategorieArticlesConfigID);
                list.RemoveAt(indice);
                NotifyDataSetChanged();
            });
            builder.SetNegativeButton(Resource.String.non, (Android.Content.IDialogInterfaceOnClickListener)null);
            builder.Show();
        }

        void modify_Click(object sender, EventArgs e)
        {
            var indice = (int)(((View)sender).Tag);
            AlertDialog.Builder builder = new AlertDialog.Builder(Activity);
            builder.SetTitle(Resource.String.modifier_categorie);
            LayoutInflater inflater = Activity.LayoutInflater;
            View v = inflater.Inflate(Resource.Layout.alertdialog_ajouter_categorie_article_configuration, null);

            TextView _nom = v.FindViewById<TextView>(Resource.Id.ed_nom_ajouter_categorie_fragment_article_configuration);

            _nom.Text = _list[indice].Nom;



            builder.SetNegativeButton(Resource.String.annuler, (Android.Content.IDialogInterfaceOnClickListener)null);
            builder.SetPositiveButton(Resource.String.modifier, delegate
            {
                CategoriesArticlesConfig c = CategoriesArticlesConfig.ReadFirst("CategorieArticlesConfigID=" + list[indice].CategorieArticlesConfigID);
                if (c != null)
                {
                    c.Nom = _nom.Text;
                    c.Save();
                }
                _list[indice].Nom = _nom.Text;
                NotifyDataSetChanged();
            });
            builder.SetView(v);
            builder.Show();
        }
    }
}
bool entree;
if ((position == 0 && !entree) || (position != 0 && entree))
{
    ...
    entree = true;
}