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