你如何将一个XML视图与一个Java类关联起来?

7 浏览
0 Comments

你如何将一个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);
    }
}

0
0 Comments

问题的出现原因是想要将一个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中使用你的小部件,其中标签将是你的类的完整包名。

0