我有一个不是Activity和一个Activity的类。 我有一个onClick方法,我想从这个onClick方法传递一个Object到Activity。 因为这个,我无法使用PutExtra: MainActivity,收藏夹,YtAdapter
我是从MainActivity打开Favroties类,但需要从YtAdapter发送到收藏夹。 希望这是可以理解的。
YtAdapter:
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
ViewHolder mHolder;
if(convertView != null){
mHolder = (ViewHolder)convertView.getTag();
}else{
mHolder = new ViewHolder();
convertView = mLayoutInflater.inflate(R.layout.view_video_item,null);
mHolder.mVideoThumbnail = (ImageView)convertView.findViewById(R.id.video_thumbnail);
mHolder.mVideoTitle = (TextView)convertView.findViewById(R.id.video_title);
mHolder.mVideoFavorite = (ImageView)convertView.findViewById(R.id.video_favorite);
convertView.setTag(mHolder);
}
//Setting the data
final SearchResult result = mVideoList.get(position);
mHolder.mVideoTitle.setText(result.getSnippet().getTitle());
//Loading the image
Picasso.with(mActivity).load(result.getSnippet().getThumbnails().getMedium().getUrl()).into(mHolder.mVideoThumbnail);
//OnClickListeners
mHolder.mVideoFavorite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//////////////////////////////////////////////////////////////
// Need to send SearchResult result from here to favorites //
////////////////////////////////////////////////////////////
AppUtils.showToast(result.getSnippet().getTitle() + " Was added to favorites.");
}
});
mHolder.mVideoThumbnail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AppUtils.showToast("Please click on title to start video");
}
});
return convertView;
}
创建YtAdapter:
@Override
public void completedRequest(Object... objects){
//Dismiss the dialog
if(mLoadingDialog != null && mLoadingDialog.isShowing())
mLoadingDialog.dismiss();
//Parse the response based on type of request
Integer reqCode = (Integer) objects[0];
if(reqCode == null || reqCode == 0)
throw new NullPointerException("Request Code's value is Invalid.");
switch (reqCode){
case SEARCH_VIDEO:
if(mYtadapter == null){
mYtadapter = new YtAdapter(this);
mYtadapter.setmVideoList((List<SearchResult>)objects[1]);
mVideoLsv.setAdapter(mYtadapter);
}else{
mYtadapter.setmVideoList((List<SearchResult>) objects[1]);
mYtadapter.notifyDataSetChanged();
}
break;
}
}
答案 0 :(得分:0)
您可以将活动的引用传递给YtAdapter,以便您可以访问活动类中包含的公共方法。
修改强>
您有mYtadapter = new YtAdapter(this);
行。如果this
不是您要引用的活动,则可以更改YtAdapter类的构造函数以包含活动。例如:
public YtAdapter(Activity myActivity) { ... }
您应该阅读面向对象的基础知识
答案 1 :(得分:0)
在YtAdapter构造函数中,您传递Activity上下文并将其用作YtAdapter中的mActivity。
如果您的SearchResult是Parcelable(或Serializable),您可以拥有,
public void onClick(View v) {
Intent i=new Intent(mActivity, Favorites.class);
i.putExtra("searchresult", result);
mActivity.startActivity(i);
}
在收藏夹中,你可以使用getIntent()。getParcelableExtra(&#34; searchresult&#34;)或getIntent()。getSerializableExtra(&#34; searchresult&#34;)来获取你的SearchResult对象。
如果您在这里寻找其他东西,请告诉我们!