Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在设置检查状态的情况下,在CheckedTextView中加载ListView项

在设置检查状态的情况下,在CheckedTextView中加载ListView项
EN

Stack Overflow用户
提问于 2014-11-19 08:35:56
回答 1查看 2K关注 0票数 0

当我的活动开始时,我最初用项目加载我的ListView时,我希望能够设置其中的一些项进行检查,但这似乎不起作用。

我使用的是simple_list_item_multiple_choice 布局,所以项目是CheckedTextView

这是适配器。然而,文本正确地显示,尽管Checked属性被设置为true/false,但它似乎并没有在视觉上执行任何操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class VehicleSubListAdapter : BaseAdapter<string>
{
    // ...

    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        View view = convertView ?? _context.LayoutInflater.Inflate(Android.Resource.Layout.SimpleListItemMultipleChoice, parent, false);

        var checkedTextView = view.FindViewById<CheckedTextView>(Android.Resource.Id.Text1);
        checkedTextView.Text = _items[position].Name;

        // This doesn't seem to do anything
        checkedTextView.Checked = _items[position].Checked;

        // I've even tried this with no change visually
        //checkedTextView.Checked = true;

        return view;
    }
}

这是可以关闭和重新打开的活动,但是需要从它停止的地方恢复(一些项目检查了,有些项目没有)。这就是为什么事物存储在全局静态变量中的原因。

如果全局列表为空,请手动更新列表。否则,从全局列表加载。它成功地从全局列表加载,并成功地存储该列表的选中属性,并在item click事件中进行修改。但是,在加载活动时,检查的项不会显示为已检查。

此外,我还尝试将对FillList()的调用同时放在OnCreateOnResume中,但两者都没有起作用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class VehicleConditionSubActivity : ListActivity
{
    private List<VehicleConditionItemDTO> _items;
    private VehicleSubListAdapter _vehicleAdapter;
    //...

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetTheme(Resource.Style.MyAppTheme);
        SetContentView(Resource.Layout.VehicleConditionItem);

        // Set up action bar
        ActionBar.SetDisplayHomeAsUpEnabled(true);

        // Set up list view
        ListView.ChoiceMode = ChoiceMode.Multiple;
        _items = new List<VehicleConditionItemDTO>();
        _vehicleAdapter = new VehicleSubListAdapter(this, _items);
        ListAdapter = _vehicleAdapter;
        ListView.ItemClick += ListView_ItemClick;

        //...

        // Fill list view
        FillList();
    }

    private void FillList()
    {
        AddFluidItems();
        _vehicleAdapter.NotifyDataSetChanged();
    }

    private void AddFluidItems()
    {
        // I've checked that this is being called correctly
        if (Global.Conditions.FluidLevels.Count > 0)
        {
            foreach (var item in Global.Conditions.FluidLevels)
            {
                _items.Add(item);
            }
        }
        else
        {
            _items.Add(new VehicleConditionItemDTO("1", "Engine oil"));
            // ...

            foreach (var item in _items)
            {
                Global.Conditions.FluidLevels.Add(item);
            }
        }

    }

    // ...

    private void ListView_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
    {
        // Items already check/uncheck properly when tapped
        // So I just update the global list items checked property
        Global.Conditions.FluidLevels[e.Position].Checked = !Global.Conditions.FluidLevels[e.Position].Checked;
    }
}

该活动的布局是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:minWidth="25px"
  android:minHeight="25px"
  android:background="@color/background">
  <ListView
      android:minWidth="25px"
      android:minHeight="25px"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:id="@android:id/list" />
</LinearLayout>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-19 11:20:29

以编程方式选择项 手动设置哪些项是“选定的”是使用SetItemChecked方法完成的(对于多个选择,可以多次调用它)

自定义列表视图的外观

请注意,SetItemChecked位于ListView上。

您可以删除GetView中设置选中的代码。

然后,对于最初应该检查的每一项(或在调用FillList期间),调用: ListView.SetItemChecked (position,true);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27022088

复制
相关文章

相似问题

CheckedTextView :选中ListView中的所有项

10

在ListView中持久化检查项的状态

21

带有checkedtextview的Listview

26

在ListView中设置项

33

CheckedTextView与ListView

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文