你如何将一个XML视图与一个Java类关联起来?
你如何将一个XML视图与一个Java类关联起来?
考虑到上面的代码例子,我们在xml中放置了一个RecyclerView
的代码,并在java类中创建了它的实例,如下所示:
menuListRV = (RecyclerView)findViewById(R.id.sugg_rv);
之后我们可以随意控制它。
现在我的问题是如何创建自己的xml标签
,可能带有一些属性,并将一个类XYZ
与之关联。
更新
我可以得到mediaplayer的视图,但是当我将一个xml附加到它上面时,我没有得到任何改变,实际上我认为xml视图本身没有被渲染。
public class ShortMediaPlayerControl extends ViewGroup { public ShortMediaPlayerControl(Context context, AttributeSet attrs) { super(context, attrs); inflate(context); Toast.makeText(context, "Coming 2", Toast.LENGTH_SHORT).show(); TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.ShortMediaPlayerControl, 0, 0); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { } private void inflate(Context context) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.short_media_player, this, true); } }
问题的出现原因是想要将一个XML视图与一个Java类关联起来,但不清楚如何实现。
解决方法是首先创建一个继承所需小部件的类,例如RecyclerView。然后可以在XML中使用这个类。
具体解决方法如下:
1. 创建一个继承RecyclerView的自定义类,例如MyCustomRecyclerView。
public class MyCustomRecyclerView extends RecyclerView { ... }
2. 在XML中使用自定义类。
更新:
可能有点晚,但我想我明白你的意思了。是的,你可以像这样将自定义小部件类与XML关联起来:
public class MyCustomRecyclerView extends RecyclerView { ... private void init(final Context context) { inflate(context, R.layout.your_custom_recycler_view_layout, this); ... } }
"can we use xml with new class?",你的意思是什么?如果你的类扩展了布局或小部件,那么是的,你可以在布局XML中使用它们。只需尝试创建你的类,添加所需的构造函数和方法(根据类型可能有所不同),然后在布局XML中使用你的小部件,其中标签将是你的类的完整包名。