C# 禁用ListActivity Xamarin.Android中项目的单击或触摸

C# 禁用ListActivity Xamarin.Android中项目的单击或触摸,c#,android,xamarin,listactivity,C#,Android,Xamarin,Listactivity,我有一个从ListActivity继承的活动。在里面我有一个简单的检查布局。我有一个叫做代码的Ilist。我已经检查了项目,如果他们包含某些字,这是很好的工作。我现在想使项目不可编辑/不可点击 public class ScanHistoryActivity : ListActivity { protected override void OnCreate(Bundle bundle) { var codes = Intent.Extras.GetStringAr

我有一个从ListActivity继承的活动。在里面我有一个简单的检查布局。我有一个叫做代码的Ilist。我已经检查了项目,如果他们包含某些字,这是很好的工作。我现在想使项目不可编辑/不可点击

public class ScanHistoryActivity : ListActivity
{
    protected override void OnCreate(Bundle bundle)
    {
        var codes = Intent.Extras.GetStringArrayList("Codes");

        base.OnCreate(bundle);
        codes.ToList();
        ListAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItemChecked, codes);
        ListView lv = FindViewById<ListView>(Android.Resource.Id.List);
        lv.ChoiceMode = ChoiceMode.Multiple;

        foreach (var c in codes)
        {
            if (c.Contains("Success"))
            {
                int position = codes.IndexOf(c);
                lv.SetItemChecked(position, true); 
                // Here i tried: 
                // lv.clickable = false; but didn't work
            }
        }       
    }
}
公共类ScanHistoryActivity:ListActivity
{
创建时受保护的覆盖无效(捆绑包)
{
var代码=Intent.Extras.GetStringArrayList(“代码”);
base.OnCreate(bundle);
ToList()代码;
ListAdapter=new ArrayAdapter(此,Android.Resource.Layout.SimpleListItemChecked,代码);
ListView lv=FindViewById(Android.Resource.Id.List);
lv.ChoiceMode=ChoiceMode.Multiple;
foreach(代码中的var c)
{
如果(c.包含(“成功”))
{
int位置=代码IndexOf(c);
lv.SetItemChecked(位置,真);
//在这里,我尝试:
//lv.clickable=false;但不起作用
}
}       
}
}
我试过了,但不幸的是没有成功

       protected override void OnCreate(Bundle bundle)
    {
        var codes = Intent.Extras.GetStringArrayList("Codes");

        base.OnCreate(bundle);
        codes.ToList();
        ListAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItemChecked, codes);
        ListView lv = FindViewById<ListView>(Android.Resource.Id.List);
        lv.ChoiceMode = ChoiceMode.Multiple;
        lv.Clickable = false;
        lv.Focusable = false;
        foreach (var c in codes)
        {
            long id = lv.GetItemIdAtPosition(codes.IndexOf(c));
            if (c.Contains("Success"))
            {
                int position = codes.IndexOf(c);
                lv.SetItemChecked(position, true);
                OnListItemClick(lv,lv, position, id);
            }
        }
    }

           protected override void OnListItemClick(ListView l, View v, int position, long id)
    {
        l.Clickable = false;
        l.Focusable = false;
    }
protectedoverride void OnCreate(捆绑包)
{
var代码=Intent.Extras.GetStringArrayList(“代码”);
base.OnCreate(bundle);
ToList()代码;
ListAdapter=new ArrayAdapter(此,Android.Resource.Layout.SimpleListItemChecked,代码);
ListView lv=FindViewById(Android.Resource.Id.List);
lv.ChoiceMode=ChoiceMode.Multiple;
lv.Clickable=false;
lv.可聚焦=假;
foreach(代码中的var c)
{
long id=lv.GetItemIdAtPosition(codes.IndexOf(c));
如果(c.包含(“成功”))
{
int位置=代码IndexOf(c);
lv.SetItemChecked(位置,真);
OnListItemClick(lv、lv、位置、id);
}
}
}
受保护的覆盖无效OnListItemClick(列表视图l、视图v、整数位置、长id)
{
l、 Clickable=false;
l、 聚焦=假;
}
还尝试了以下操作:制作了我自己的适配器,以使其更好地工作: 创建时受保护的覆盖无效(捆绑包) { var代码=Intent.Extras.GetStringArrayList(“代码”)

base.OnCreate(bundle);
ToList()代码;
ListAdapter=new ScanHistoryAdapter(此代码为.ToArray());
ListView lv=FindViewById(Android.Resource.Id.List);
lv.ChoiceMode=ChoiceMode.Multiple;
lv.Clickable=false;
lv.可聚焦=假;
foreach(代码中的var c)
{
long id=lv.GetItemIdAtPosition(codes.IndexOf(c));
如果(c.包含(“成功”))
{
int位置=代码IndexOf(c);
lv.SetItemChecked(位置,真);
视图v=FindViewById(ListAdapter.GetItemId();
OnListItemClick(lv、lv、位置、id);
}
}
}
受保护的覆盖无效OnListItemClick(列表视图l、视图v、整数位置、长id)
{
l、 Clickable=false;
l、 聚焦=假;
}
我们只需将false值传递给setClickable方法,就可以像这样禁用java中的单击

ListView myList = (ListView) findViewById(R.id.list_view_id);
myList.setClickable(false);
试试看!!!可能会有类似的方法

我们有一些方法可以像这样覆盖并使特定项不可查找

@Override
public boolean isEnabled(int position) {
if(position == your_item_pos) {
    return false;
}
return true;
}

我认为lv.clickable=false;与该值完全相同,它在同一时间不起作用moment@SamRa这个问题怎么了,兄弟?解决了吗?
@Override
public boolean isEnabled(int position) {
if(position == your_item_pos) {
    return false;
}
return true;
}