如何在 ListView 内的复选框中获取位置

Posted

技术标签:

【中文标题】如何在 ListView 内的复选框中获取位置【英文标题】:How to get the position in a checkbox inside a ListView 【发布时间】:2016-01-15 09:12:41 【问题描述】:

我有一个带有复选框的 listView。我想要做的是当我单击复选框时在 Toast 中显示此复选框的位置。我正在尝试一些事情,但我现在不知道我做错了什么。我在这里找到了一些类似的解决方案,但对我不起作用。

在我的代码中,如果您在行中按下,我可以显示 Toast,但如果您按下复选框则不会。

提前致谢

public class MyClass extends HmBaseActivity

    protected ListView listView ;
    protected CheckBox selectDay;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.play_all_day);

        listView = (ListView) findViewById(R.id.weekList);
        listView.setChoiceMode(listView.CHOICE_MODE_MULTIPLE);
        selectDay = (CheckBox)findViewById(R.id.checkBox_play_all_day);

       final String[] values = new String[] 
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday",
                "Saturday",
                "Sunday";

        ArrayAdapter <String> adapter = new ArrayAdapter<String>(this, R.layout.list_days, R.id.play_all_day, values);
        listView.setAdapter(adapter);
        listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() 

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
                // ListView Clicked item value
                String  itemValue = (String) listView.getItemAtPosition(position);

                Toast.makeText(getApplicationContext(),
                        "Position :" + position + "  ListItem : " + itemValue, Toast.LENGTH_LONG)
                        .show();

            

        );
    

【问题讨论】:

【参考方案1】:

试试这个:

selectDay.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() 

   @Override
   public void onCheckedChanged(CompoundButton compoundButtonView, boolean isChecked) 

     // ListView Clicked item value
        String  itemValue = (String) listView.getItemAtPosition(position);

        Toast.makeText(getApplicationContext(),
                    "Position :" + position + "  ListItem : " + itemValue, Toast.LENGTH_LONG)
                    .show();
   );     

【讨论】:

这是一个不同的问题,只需调试您的应用并检查为什么 selectDay 为空

以上是关于如何在 ListView 内的复选框中获取位置的主要内容,如果未能解决你的问题,请参考以下文章

单击按钮时如何在android中获取带有ListView值的复选框,EditText?

如何使用复选框和自定义适配器从 Listview 中获取选定的列表项?

如何从C#中获取ListView中选中某一行某一列的值

如何在适配器外部的 ListView 和 GridView 中获取项目位置?

如何在android中获取ListView反向位置?

使用复选框从 ListView 中获取选中的项目