Android:如何从RecycleServiceWholder访问工具栏?

Android:如何从RecycleServiceWholder访问工具栏?,android,android-recyclerview,toolbar,Android,Android Recyclerview,Toolbar,问题: 如何从RecycleServiceWholder访问工具栏及其子项? 我想用长点击从RecycleServiceWholder更改我工具栏中的文本视图 我所知道的 我知道如何在创建时从我的活动中访问工具栏 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowTitleEnab

问题:

如何从RecycleServiceWholder访问工具栏及其子项? 我想用长点击从RecycleServiceWholder更改我工具栏中的文本视图

我所知道的

我知道如何在创建时从我的活动中访问工具栏

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    txtTitle = (TextView) toolbar.findViewById(R.id.txtTitle);
    rbSelectAll = (RadioButton)toolbar.findViewById(R.id.rbSelectAll);
    rbSelectAll.setVisibility(GONE);
    txtTitle.setText("Gallerie");
RecycleServiceAdapter.java

RecycleServiceWholders.java

activity_main.xml

toolbar\u main.xml


你不应该把两种完全不同的观点结合起来。您应该定义活动应该实现的onLongClick界面,并在ViewHolder的构造函数中的每个itemView上设置它,然后执行工具栏功能。

您不应该将两个完全不同的视图耦合在一起。您应该定义活动应该实现的onLongClick界面,并在ViewHolder的构造函数中的每个itemView上设置它,然后执行工具栏功能。

您可以使用该界面实现如下所示的目标

创建一个接口

public interface DummyInterface {
    public void doSomethingWithToolbar();
}
然后在您的活动上实现此接口

public class DummyActivity extends Activity implements DummyInterface {
    .
    .
    .
    public void doSomethingWithToolbar() {
        //do something with toolbar
    }
}
然后在构造函数中创建回收器视图时传递此活动的引用。像

new DummyRecyclerView(..., this);
DummyInterface dummy = new DummyInterface();
public DummyRecyclerView(..., DummyInterface d) {
    dummy = d;
}
然后在RecyclerView的构造函数中添加一个参数。像

new DummyRecyclerView(..., this);
DummyInterface dummy = new DummyInterface();
public DummyRecyclerView(..., DummyInterface d) {
    dummy = d;
}
然后将dummy传递给RecycleServiceWholder的构造函数,并将其添加到RecycleServiceWholder构造函数中的参数,方法与从Activity到RecycleView的方法相同。
您可以使用dummy.doSomethingWithToolbar从RecycleServiceWholder调用方法doSomethingWithToolbar。

您可以使用界面来实现如下所示的目标

创建一个接口

public interface DummyInterface {
    public void doSomethingWithToolbar();
}
然后在您的活动上实现此接口

public class DummyActivity extends Activity implements DummyInterface {
    .
    .
    .
    public void doSomethingWithToolbar() {
        //do something with toolbar
    }
}
然后在构造函数中创建回收器视图时传递此活动的引用。像

new DummyRecyclerView(..., this);
DummyInterface dummy = new DummyInterface();
public DummyRecyclerView(..., DummyInterface d) {
    dummy = d;
}
然后在RecyclerView的构造函数中添加一个参数。像

new DummyRecyclerView(..., this);
DummyInterface dummy = new DummyInterface();
public DummyRecyclerView(..., DummyInterface d) {
    dummy = d;
}
然后将dummy传递给RecycleServiceWholder的构造函数,并将其添加到RecycleServiceWholder构造函数中的参数,方法与从Activity到RecycleView的方法相同。 您可以使用dummy.doSomethingWithToolbar从RecycleServiceWholder调用方法doSomethingWithToolbar

或 MainActivity context.findviewbydr.id.toolbar


MainActivity context.findviewbydr.id.toolbar

步骤1:为RecycleServiceMonitorClick创建类和接口

RecyclerTouchListener.java

接口IOnRecyclerItemClickedListener.java

步骤2:在活动中实现IOnRecyclerItemClickedListener

YourActivity.java


我希望这个答案能帮助你

步骤1:为RecycleServiceMonitorClick创建类和接口

RecyclerTouchListener.java

接口IOnRecyclerItemClickedListener.java

步骤2:在活动中实现IOnRecyclerItemClickedListener

YourActivity.java


我希望这个答案能帮助你

在接口的帮助下,您可以这样做。如何将工具栏引用作为属性存储在活动中,并将RecyclerView适配器和holder声明为活动的嵌套类?通过这种方式,您可以轻松访问引用工具栏的属性。是否尝试了eventbus?它很容易使用。在接口的帮助下,您可以这样做。如何将工具栏引用作为属性存储在活动中,并将RecyclerView适配器和holder声明为活动的嵌套类?通过这种方式,您可以轻松访问引用工具栏的属性。是否尝试了eventbus?它很容易使用。我不明白,对不起。有教程吗?您要做的是定义一个接口,该接口包含一个方法,该方法将被列表项的onLongClick方法调用,并使您的活动实现该接口。您将该活动的引用传递到RecyclerAdapter,RecyclerAdapter将该引用传递到每个ViewHolder构造函数中,并将其作为内部变量存储。当ViewHolder的onLongClick触发时,您可以根据传递给构造函数的引用调用在接口上定义的方法。请看vivek patel的回答。我不明白。对不起。有教程吗?您要做的是定义一个接口,该接口包含一个方法,该方法将被列表项的onLongClick方法调用,并使您的活动实现该接口。您将该活动的引用传递到RecyclerAdapter,RecyclerAdapter将该引用传递到每个ViewHolder构造函数中,并将其作为内部变量存储。当ViewHolder的onLongClick触发时,您可以根据传递给构造函数的引用调用在接口上定义的方法。参见vivek patel的答案。这不是正确的方法。视图代码不应直接修改非相关或自有视图保留。这样想,孩子们不应该告诉彼此该做什么,父母应该告诉孩子该做什么。对于您的解决方案,您的子视图正在告诉另一个子视图该做什么。子视图应通知pare
并允许家长告诉孩子该做什么。这不是正确的方法。视图代码不应直接修改非相关或自有视图保留。这样想,孩子们不应该告诉彼此该做什么,父母应该告诉孩子该做什么。对于您的解决方案,您的子视图正在告诉另一个子视图该做什么。子视图应该将事件通知父视图,并允许父视图告诉子视图该做什么。