Java 如何在项目单击xamarin android时选中ListView的复选框

Java 如何在项目单击xamarin android时选中ListView的复选框,java,c#,android,listview,xamarin.android,Java,C#,Android,Listview,Xamarin.android,当单击OnListItemClick列表复选框中的项目时,我有一个带有复选框和文本视图的列表视图。。 这是我的适配器类: public class ViewHoldername : Java.Lang.Object { public EditText etdName { get; set; } public EditText etdTitle { get; set; } } class listViewNames : BaseAdapter&l

当单击
OnListItemClick
列表复选框中的项目时,我有一个带有复选框和文本视图的列表视图。。 这是我的适配器类:

public class ViewHoldername : Java.Lang.Object
    {
        public EditText etdName { get; set; }
        public EditText etdTitle { get; set; }


    }
class listViewNames : BaseAdapter<logINsnc.Customers_transfer>
    {

     private ISharedPreferences savePreferences;
     static     private ISharedPreferencesEditor savePrefsEditor;
     private Boolean saveLogin;  
     public static  CheckBox namechecbox ;
     public static List<string> listNameChecked = new List<string>();
     Activity activity;

     List<logINsnc.Customers_transfer> ArriveList = new               List<logINsnc.Customers_transfer>();

   // SQliteDB bb = new SQliteDB();
    logINsnc bb = new logINsnc();

    async public Task<List<logINsnc.Customers_transfer>> Add_DataList(string s)
    {

      //  string Get =  ExpandableListAdapter.Globals.voucher;
        ArriveList = await bb.DetailsNamelistForPOpUp(s);
        return ArriveList;

    }
    public string GetVoucher()
    {
        string voucher = "";
        return voucher;
    }
    public listViewNames()
    {

    }

    public listViewNames(Activity activity,   List<logINsnc.Customers_transfer> Arrive)
        : base()
    {

        this.activity = activity;
        this.ArriveList = Arrive;
    }


    public override int Count
    {
        get
        {
            return ArriveList.Count();
        }
    }


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


    public override long  GetItemId(int position)
    {
        return ArriveList[position].SrvOrd_Sub_Id;
    }


    public override logINsnc.Customers_transfer this[int position]
    {
        get { return ArriveList[position]; }
    }




    public override View GetView(int position, View convertView, ViewGroup  parent)
    {
          savePreferences = Application.Context.GetSharedPreferences("savePrefs", FileCreationMode.Private);
        Globals.custimersCount = Count;

     activity.LayoutInflater.Inflate(Resource.Layout.Details_Template, null);
        var item = ArriveList[position];
        View view = convertView;

        if (view == null) // no view to re-use, create new
            view = activity.LayoutInflater.Inflate(Resource.Layout.Custmize_Name_layout, null);

        Globals.Ser_Sub = item.SrvOrd_Sub_Id;


         view.FindViewById<TextView>(Resource.Id.etdNamelis).Text = item.Name.ToString();
         view.FindViewById<TextView>(Resource.Id.etdTitle).Text = item.Title;
         namechecbox = view.FindViewById<CheckBox>(Resource.Id.checkBoxnam);
      //   checkBoxButton = (CheckBox)convertView.FindViewById(Resource.Id.checkBoxButton);
         namechecbox.Tag = item.Title + ";"+ position+";"+item.Name;


         savePrefsEditor = savePreferences.Edit();

         saveLogin = savePreferences.GetBoolean("saveLogind" + position + item.Name, false);
         if (saveLogin == true)
         { 
              namechecbox.Checked = true;

         }  

        namechecbox.SetOnCheckedChangeListener(null);

        namechecbox.SetOnCheckedChangeListener(new CheckedChangeListener(this.activity)); 

         return view;

    }


    private class CheckedChangeListener : Java.Lang.Object, CompoundButton.IOnCheckedChangeListener
    {
        private Activity activity;

        public CheckedChangeListener(Activity activity)
        {
            this.activity = activity;
        }

        public void OnCheckedChanged(CompoundButton buttonView, bool isChecked)
        {

            String[] tag = buttonView.Tag.ToString().Split(';');
            string name = tag[0];
               if (isChecked && !savePreferences.Contains("saveLogind" + tag[1] + tag[2]  ))

            {

            savePrefsEditor.PutBoolean("saveLogind" + tag[1]+tag[2], true);

            savePrefsEditor.Commit();  

                listNameChecked.Add(name);
                Globals.listName = listNameChecked;

            }
            else
            {

                listNameChecked.Remove(name);

               editor.Remove("saveLogind" + tag[1] + tag[2] );
               savePrefsEditor.Commit(); 
                Globals.listName = listNameChecked;


            }
        }
    }
公共类ViewHoldername:Java.Lang.Object
{
公共编辑文本etdName{get;set;}
公共编辑文本etdTitle{get;set;}
}
类listViewNames:BaseAdapter
{
私人iSharedReferences存储首选项;
静态私有ISharedReferencesEditor savePrefedEditor;
私有布尔存储登录;
公共静态复选框名称checbox;
公共静态列表listNameChecked=新列表();
活动;
List ArriveList=新列表();
//SQliteDB bb=新的SQliteDB();
logINsnc bb=新的logINsnc();
异步公共任务添加数据列表(字符串s)
{
//字符串Get=ExpandableListAdapter.Globals.voucher;
ArriveList=等待bb.DetailsNamelistForPOpUp;
返回到达列表;
}
公共字符串GetVoucher()
{
字符串=”;
退货凭证;
}
公共列表视图名称()
{
}
公共列表视图名称(活动、列表到达)
:base()
{
这个。活动=活动;
this.ArriveList=到达;
}
公共覆盖整数计数
{
得到
{
返回ArriveList.Count();
}
}
public override Java.Lang.Object GetItem(int位置)
{
返回位置;
}
公共覆盖长GetItemId(int位置)
{
返回ArriveList[position].SrvOrd\u Sub\u Id;
}
public override logINsnc.Customers\u传输此[int position]
{
获取{return ArriveList[position];}
}
公共覆盖视图GetView(int位置、视图转换视图、视图组父视图)
{
savePreferences=Application.Context.getSharedReferences(“savePrefs”,FileCreationMode.Private);
Globals.custimersCount=计数;
activity.LayoutInflater.Inflate(Resource.Layout.Details_模板,空);
可变项目=到达列表[位置];
视图=转换视图;
如果(view==null)//没有要重用的视图,则创建新的
视图=activity.LayoutInflater.Inflate(Resource.Layout.Custmize\u Name\u Layout,null);
Globals.Ser_Sub=item.SrvOrd_Sub_Id;
view.FindViewById(Resource.Id.etdNamelis).Text=item.Name.ToString();
view.findviewbyd(Resource.Id.etdTitle).Text=item.Title;
namechebox=view.findviewbyd(Resource.Id.checkBoxnam);
//checkBoxButton=(复选框)convertView.FindViewById(Resource.Id.checkBoxButton);
namechbox.Tag=item.Title+“;”+position+“;”+item.Name;
savePrefsEditor=savePreferences.Edit();
saveLogin=savePreferences.GetBoolean(“saveLogind”+position+item.Name,false);
if(saveLogin==true)
{ 
namechebox.Checked=true;
}  
namechecbox.SetOnCheckedChangeListener(空);
namechecbox.SetOnCheckedChangeListener(新的CheckedChangeListener(this.activity));
返回视图;
}
私有类CheckedChangeListener:Java.Lang.Object,CompoundButton.IOnCheckedChangeListener
{
私人活动;
公共CheckedChangeListener(活动)
{
这个。活动=活动;
}
检查更改后的公共无效(复合按钮视图,布尔已检查)
{
String[]tag=buttonView.tag.ToString().Split(“;”);
字符串名称=标记[0];
if(isChecked&!savePreferences.Contains(“saveLogind”+标记[1]+标记[2]))
{
savePrefsEditor.PutBoolean(“saveLogind”+标记[1]+标记[2],true);
savePrefeditor.Commit();
listNameChecked.Add(名称);
Globals.listName=listNameChecked;
}
其他的
{
listNameChecked。删除(名称);
删除(“saveLogind”+标记[1]+标记[2]);
savePrefeditor.Commit();
Globals.listName=listNameChecked;
}
}
}
这是我的活动

  public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {

            base.OnCreateView(inflater, container, savedInstanceState);

            var view = inflater.Inflate(Resource.Layout.PopUpLayont, container, false);
            SetHasOptionsMenu(true);
            TextView textView2 = view.FindViewById<TextView>(Resource.Id.textView2);
            listviewview = view.FindViewById<ListView>(Resource.Id.listViewName);

            Button Divide = view.FindViewById<Button>(Resource.Id.Divv);
            Divide.Click +=Divide_Click;
            DialogFragment s = new DialogFragment();
            Dialog.SetTitle("   Customers Details ");

        //    Dialog.Window.RequestFeature(WindowFeatures.NoTitle);
            s.Cancelable = false;

            return view;
        }
  private void Divide_Click(object sender, EventArgs e)
      {//....}
  private void OnListItemClick(object sender, AdapterView.ItemClickEventArgs e)
      {



           Toast.MakeText(this.Activity, "clickedd", ToastLength.Long).Show();
      }
public override视图OnCreateView(布局、充气机、视图组容器、Bundle savedInstanceState)
{
base.OnCreateView(充气机、容器、保存状态);
var视图=充气机。充气(Resource.Layout.PopUpLayont,container,false);
设置选项菜单(真);
TextView textView2=view.FindViewById(Resource.Id.textView2);
listviewview=view.FindViewById(Resource.Id.listViewName);
按钮Divide=view.findviewbyd(Resource.Id.Divv);
分割。单击+=分割\u单击;
DialogFragment s=新DialogFragment();
Dialog.SetTitle(“客户详细信息”);
//Dialog.Window.RequestFeature(WindowFeatures.NoTitle);
s、 可取消=错误;
返回视图;
}
私有void Divide\u单击(对象发送方,事件参数e)
{//....}
private void OnListItemClick(对象发送者,AdapterView.ItemClickEventArgs e)
{
Toast.MakeText(this.Activity,“clickedd”,ToastLength.Long.Show();
}

请更具体地说,添加错误代码并编辑您的问题单击“我的列表视图”项目时,我没有错误,请选中复选框,,我不知道如何操作?可能重复我在那里尝试过的答案,,不适用于我