![](/img/trans.png)
[英]Xamarin.Android TextView disable - SetFocusable or Clickable?
[英]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.