Android:将活动上下文获取到数组适配器类中

Android:将活动上下文获取到数组适配器类中,android,android-animation,android-arrayadapter,android-context,Android,Android Animation,Android Arrayadapter,Android Context,我正试图在像卡德斯塔克一样的打火机上制造玻璃破碎效果。这些卡工作正常,但我无法将activity ContextIn放入适配器中,以便使用brokenview插件 我有我的主活动,在该活动上我显示一个片段,在该片段上我显示cardstack 在该卡片堆栈上,当用户使用此库单击低评级按钮时,我想显示一个玻璃破碎动画: 因此,在我的适配器getview中,我使用上下文设置断开视图的上下文 这一行: mBrokenView = BrokenView.add2Window((MainActivity)

我正试图在像卡德斯塔克一样的打火机上制造玻璃破碎效果。这些卡工作正常,但我无法将activity ContextIn放入适配器中,以便使用brokenview插件

我有我的主活动,在该活动上我显示一个片段,在该片段上我显示cardstack

在该卡片堆栈上,当用户使用此库单击低评级按钮时,我想显示一个玻璃破碎动画:

因此,在我的适配器getview中,我使用上下文设置断开视图的上下文 这一行:

mBrokenView = BrokenView.add2Window((MainActivity)this.getContext());
但当我运行时,单击按钮,我会得到以下错误:

ClassCastException: com.mysampleapp.Application cannot be cast to com.mysampleapp.MainActivity
谢谢你的帮助

完整代码如下:

public class SongPreviewCardsDataAdapter extends ArrayAdapter<SongDatabaseMappingAdapter> {

    public SongPreviewCardsDataAdapter(Context context, int resource) {
        super(context, resource);

    }

    ImageButton oneStarRating;
    BrokenView mBrokenView;
    private BrokenTouchListener listener;

    @Override
    public View getView(int position, final View contentView, ViewGroup parent) {

       // Initialise Song Views
       final SongDatabaseMappingAdapter item = getItem(position);

       TextView songName = (TextView) (contentView.findViewById(R.id.songNameTextView));
       songName.setText(item.getSongTitle());

       // Initialise  Rating Buttons
        oneStarRating = (ImageButton) contentView.findViewById(R.id.ratingButton1);
        if (item.getOneStarRating()) {
            oneStarRating.setImageResource(R.drawable.starfull);

            mBrokenView = BrokenView.add2Window((MainActivity)this.getContext());
            listener = new BrokenTouchListener.Builder(mBrokenView).build();
            songName.setOnTouchListener(listener);

        }
公共类SongPreviewCardsDataAdapter扩展了ArrayAdapter{
public SongPreviewCardsDataAdapter(上下文,int资源){
超级(上下文、资源);
}
图像按钮一星;
BrokenView mBrokenView;
私人监听;
@凌驾
公共视图getView(int位置、最终视图contentView、视图组父视图){
//初始化歌曲视图
最终SongDatabaseMappingAdapter项=getItem(位置);
TextView-songName=(TextView)(contentView.findviewbyd(R.id.songNameTextView));
songName.setText(item.getSongTitle());
//初始化分级按钮
OneStarting=(ImageButton)contentView.findViewById(R.id.ratingButton1);
if(item.getonestarting()){
onestarting.setImageResource(R.drawable.starfull);
mBrokenView=BrokenView.add2Window((MainActivity)this.getContext());
listener=new-brokentouchtlistener.Builder(mBrokenView.build();
songName.setOnTouchListener(listener);
}
试试这个:

mBrokenView = BrokenView.add2Window(contentView.getContext());
请尝试以下方法:

mBrokenView = BrokenView.add2Window((MainActivity)(parent.getContext()));

这里有几个问题-为什么您明确需要断开视图的MainActivity上下文?您将传递什么作为适配器构造函数的上下文参数?我不确定您在示例ion github brokenView=brokenView.add2Window(上下文)中的意思;然后在错误中,我得到了add2Window(android.app.Activity)无法应用于android内容上下文。因此我假设它需要活动上下文。嗨,我在问问题之前已经尝试过了。我得到,错误:(84,49)错误:不兼容类型:无法将上下文转换为活动感谢@Eric不幸的是,这不起作用,同样的错误。虽然Barteks的响应很好,但都起了作用。感谢您的回答!我做错了什么或怎么做的?当您创建
适配器时,您很可能将
应用程序
上下文
作为密码传递你需要记住的是,
应用程序
上下文
活动
上下文
不一样。你不能像这样一个一个地转换。你正在使用的库需要
活动
,因此你不能使用
应用程序
上下文
视图
具有
活动
上下文
,您可以通过
view.getContext()
获得该活动。