【问题标题】:How to manipulate data in list view that is populated by custom cursor adapter如何操作由自定义光标适配器填充的列表视图中的数据
【发布时间】:2014-02-17 06:05:50
【问题描述】:

我使用自定义光标适配器填充了一个列表视图,该列表视图由checkboxbutton 组成,方式如下。

checkbox1 button1
checkbox2 button2
.
.
.

现在我想在单击列表视图中的按钮时导航到另一个活动现在我的问题是当我单击 button1 然后我想查看 checkbox1 中的数据以及其他行的数据。

现在我对如何在复选框和按钮之间维护sync 以及如何实现点击功能感到困惑。我怎样才能做到这一点?

【问题讨论】:

    标签: android android-listview


    【解决方案1】:

    如果ButtonCheckBox 共享同一个父级,您可以对ButtononClickListener 执行以下操作

    boldButton.setOnClickListener(new OnClickListener()
    {
    
        @Override
        public void onClick(View view)
        {
           View parentView = (View) view.getParent();
           CheckBox checkBox = (CheckBox) parentView.findViewById(R.id.check);
        }
    });
    

    这将为您提供与点击的Button相对应的CheckBox

    【讨论】:

    • 谢谢@Apoorv。这对我来说是一个很好的提示
    • 不客气。如果有帮助,您可以接受答案。
    • 您好批准...抱歉回复迟到无法获得时间...实际上我只尝试了列表视图中存在的按钮单击侦听器,但没有按照您的建议...请建议我这是否是正确的方法。谢谢
    • 你必须在getView上设置上面提到的onClickListenerButton
    • 是的,我也做了同样的事情......我很困惑这是否是一个正确的方法。如果你告诉我这是一个正确的方法,我会继续,也请编辑你的答案,以便我可以接受它作为回答。
    【解决方案2】:

    你需要在实现 onclickListener 的列表视图中找到你对应的视图

    例如

        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    
                Button b = (Button)v.findViewById(R.id.button);
                                b.setOnClickListener(new OnClickListener() {
    
                    @Override
                    public void onClick(View v) {
                                      Intent i=new Intent(this,SecondActivity.Class)
                                       startActivity(i);    
                               }
                });
                                //Similarly for the checkbox
            }
        });
    

    【讨论】:

    • 感谢您的回复@Shink,但这是列表视图的 onclick,但我想单击列表视图中的按钮以导航到新活动,然后如何实现列表视图中的按钮单击
    • 在列表视图的 onclick 内部实现按钮的 onclick 和导航...检查我的编辑
    【解决方案3】:

    在适配器类中使用ViewHolder 类并在getView() 中使用它,然后在getView 中使用它

    viewHolder.yourButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(viewHolder.checkbox.isChecked())
                                    // toggle the check and do your work here
            }
        });
    

    你可以学习ViewHolder模式here非常简单

    另一个例子link

    【讨论】:

    • 谢谢@Viswanath 视图应该附加到列表视图或按钮?
    • Viewholder 应该附加到每个 listitem ,你可以在提供的链接中看到
    【解决方案4】:

    这个Selectable ListView Tutorial 链接应该对您的解决方案有所帮助。

    【讨论】:

      【解决方案5】:

      查看这篇文章可能会有所帮助。 您必须在列表视图中保留行的状态,以便可以使用其状态填充行。

      Android how to identify item in listview with checkbox

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-11
        • 1970-01-01
        • 2011-12-31
        相关资源
        最近更新 更多