繁体   English   中英

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

[英]Disable click or touch for items in ListActivity Xamarin.Android

我有一个从ListActivity继承的Activity。 里面我有一个SimpleListItemChecked布局。 我有一个称为代码的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
            }
        }       
    }
}

试过这个,但工作不方便。

       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;
    }

也尝试过此方法:制作了自己的适配器以尝试使其更好地工作:受保护的重写void OnCreate(Bundle bundle){var code = Intent.Extras.GetStringArrayList(“ Codes”);

        base.OnCreate(bundle);
        codes.ToList();
                    ListAdapter = new ScanHistoryAdapter(this, codes.ToArray());
        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);
                View v = FindViewById(ListAdapter.GetItemId();
                OnListItemClick(lv,lv, position, id);
            }
        }
    }

    protected override void OnListItemClick(ListView l, View v, int position, long id)
    {
        l.Clickable = false;
        l.Focusable = false;
    }

简而言之,我们使用将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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM