我有个活动。在这个活动中,我必须在另一个类中运行一个方法。我在另一堂课中使用ViewHolder。我被告知,当我直接调用类时,我需要添加一个“super()”方法。但我不能这么做。因为我已经加入了。虽然调用方法的方式不同,但有人告诉我,我需要将该方法设置为静态的。但是以这种方式,Textview和按钮在这个类中不起作用。我不知道该怎么办,也找不到解决办法。如果你能帮忙我会很高兴的。
我的活动;
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;
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);
}
}
}发布于 2020-01-23 02:38:06
在您的MainActity中这样做。
public class MainActivity extends AppCompatActivity implements RewardedVideoAdListener
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView yourActivityMainTextView=findViewById(R.id.your_txt_view_id) //from activity
main xml
MyClass myClass = new MyClass(yourActivityMainTextView);
myClass.myMethod();
}
}发布于 2020-01-23 03:00:30
在这里,我觉得您正在以不同的方式使用Recylerview的ViewHolder,这是不推荐的。我的想法是,您正在使用RecylerView.ViewHolder显示使用RecyclerView的列表。
如果是,那么您应该使用扩展RecyclerView.Adapter的类并为ViewHolder创建一个类。您可以在Adapter中传递您的方法,这将非常容易地通过您的活动访问。
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的对象如下:
AnyAdapter adapter = new AnyAdapter();您可以这样访问您的方法。希望它能对你有用。
编码愉快..!
发布于 2020-01-23 04:02:24
您只需在项目中添加适配器即可。下面的链接将帮助您https://abhiandroid.com/ui/adapter
https://stackoverflow.com/questions/59870708
复制相似问题