首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从另一个类调用MainActivity中的方法(使用ViewHolder)?

如何从另一个类调用MainActivity中的方法(使用ViewHolder)?
EN

Stack Overflow用户
提问于 2020-01-23 02:03:59
回答 3查看 148关注 0票数 0

我有个活动。在这个活动中,我必须在另一个类中运行一个方法。我在另一堂课中使用ViewHolder。我被告知,当我直接调用类时,我需要添加一个“super()”方法。但我不能这么做。因为我已经加入了。虽然调用方法的方式不同,但有人告诉我,我需要将该方法设置为静态的。但是以这种方式,Textview和按钮在这个类中不起作用。我不知道该怎么办,也找不到解决办法。如果你能帮忙我会很高兴的。

我的活动;

代码语言:javascript
运行
复制
public class MainActivity extends AppCompatActivity implements RewardedVideoAdListener {

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

        //First Step - DOES NOT WORK !!!!
        MyClass myClass = new MyClass();
        myClass.myMethod();
        //Doesn't work. Because i want to add super() method to MyClass. But i was added earlier. I can't use again.


        //Secondly Step - DOES NOT WORK !!!!
        MyClass .myMethod();
        //Doesn't work. Because i want to add public void static to method. If i add static my method, i can't use buttons or textviews.
     }
}

MyClass;

代码语言:javascript
运行
复制
public class MyClass extends RecyclerView.ViewHolder {

    //Example
    public TextView mytextview;
    private boolean myboolean = false;

    public MyClass (View itemView) {
        super(itemView);

        mytextview= (TextView)itemView.findViewById(R.id.mytextview);
    }

    public void myMethod(){

    myboolean = false;

    if (!myboolean){

     myboolean = true;
     mytextview.setVisibility(View.VISIBLE);
    } 

    else {

     myboolean = false;
     mytextview.setVisibility(View.INVISIBLE);
    }

    }

  //If i static method, doesn't work other view. example:textview.setvisibility or myboolean=true etc.... I can't use private static Textview or others...
  public static void myMethod(){

        myboolean = false;

     if (!myboolean){

     myboolean = true;
     mytextview.setVisibility(View.VISIBLE);
    } 

    else {

     myboolean = false;
     mytextview.setVisibility(View.INVISIBLE);
       }
    }
}
EN

Stack Overflow用户

发布于 2020-01-23 03:00:30

在这里,我觉得您正在以不同的方式使用Recylerview的ViewHolder,这是不推荐的。我的想法是,您正在使用RecylerView.ViewHolder显示使用RecyclerView的列表。

如果是,那么您应该使用扩展RecyclerView.Adapter的类并为ViewHolder创建一个类。您可以在Adapter中传递您的方法,这将非常容易地通过您的活动访问。

代码语言:javascript
运行
复制
public class AnyAdapter extends RecyclerView.Adapter<YourObjectType> {
     public TextView mytextview;
     private boolean myboolean = false;

     public MyClass (View itemView) {
        super(itemView);
        mytextview= (TextView)itemView.findViewById(R.id.mytextview);
     } 

    static class ViewHolder {
        ImageView downloadImageButton;
        TextView catlogTitle;
        ImageView icon;
        int position;
    }

    public View getView(final int position, View convertView, ViewGroup parent) {
        ...
    } // close getView
}

在活动中创建Adapter的对象如下:

代码语言:javascript
运行
复制
AnyAdapter adapter = new AnyAdapter();

您可以这样访问您的方法。希望它能对你有用。

编码愉快..!

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59870708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档