adapter代码如下
public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder> {
private List<News> mNewsList;
static class ViewHolder extends RecyclerView.ViewHolder{
View newsView;
ImageView newsImage;
TextView newsTitle;
TextView newsResource;
TextView newsDate;
TextView newsDetail;
public ViewHolder(View view)
{
super(view);
newsView=view;
newsImage=(ImageView) view.findViewById(R.id.news_image);
newsTitle=(TextView)view.findViewById(R.id.news_title);
newsDate=(TextView)view.findViewById(R.id.news_date);
newsResource=(TextView)view.findViewById(R.id.news_resource);
newsDetail=(TextView)view.findViewById(R.id.detail_context);
}
}
public NewsAdapter(List<News> newsList)
{
mNewsList=newsList;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.news_item,parent,false);
final Context context=parent.getContext();
final ViewHolder holder=new ViewHolder(view);
holder.newsView.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view) {
int position=holder.getAdapterPosition();
News news=mNewsList.get(position);
Log.d("Title",news.getTitle());
Intent intent=new Intent(context,DetailActivity.class);
intent.putExtra("new",news);
context.startActivity(intent);
}
});
return holder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
News news=mNewsList.get(position);
holder.newsImage.setImageResource(news.getImageId());
holder.newsTitle.setText(news.getTitle());
holder.newsResource.setText(news.getResource());
holder.newsDate.setText(news.getDate());
}
@Override
public int getItemCount() {
return mNewsList.size();
}
}
8 个解决方案
#1
启动新activity用 startActivityForResult();
原activity 重写 onActivityResult(int requestCode, int resultCode, Intent data) 方法,在这里修改数据将这条数据设为已读,再刷新adapter
原activity 重写 onActivityResult(int requestCode, int resultCode, Intent data) 方法,在这里修改数据将这条数据设为已读,再刷新adapter
#2
startActivityForResult
#3
通过接口回调把需要做的操作传给Activity 然后Activity再通过startActivityForResult的带返回值的跳转 传给上一个界面
#4
谢谢回答,成功解决数据传递的问题,之前想过用startActivityForResult但是在context后这个方法一直是红的,把context强制转换成Activity后成功。
但之前自己想的太天真,真的做下来才发现有点问题。
请问一下我能如何获得这是RecycleView中的哪个item,是需要在item的类中添加一个属性来判断是否已读吗?
最后需要根据此重设此item的textview的属性,还是在刷新adapter的时候adapter中判断这个属性更改么?
刚刚开始接触,问题有点多,不好意思,非常感谢
#5
重新写了一下后,问题变成如何获得这到底是哪一个item,因为我是在item的类中增加了一个属性去判断是否已读,但是在adapter打开的activity中传递过去的是一个item,返回数据是返回了一个标志值。在上一个activity中接受时无法知道这究竟是哪个item啊,貌似是无法返回这个item啊,这就难倒了。。。
有没有什么更好的方法啊,谢谢
#6
item加个唯一的ID属性,返回时把ID也返回,然后把这个ID对应的item设为已读,
#7
跳转使用activity.startActivityForResult();
重写Activity的onActivityResult(int requestCode, int resultCode, Intent data) 方法,然后通过data获取传递的数据
重写Activity的onActivityResult(int requestCode, int resultCode, Intent data) 方法,然后通过data获取传递的数据
#8
启动新activity用 startActivityForResult();
原activity 重写 onActivityResult(int requestCode, int resultCode, Intent data) 方法,在这里修改数据将这条数据设为已读,再刷新adapter
重新写了一下后,问题变成如何获得这到底是哪一个item,因为我是在item的类中增加了一个属性去判断是否已读,但是在adapter打开的activity中传递过去的是一个item,返回数据是返回了一个标志值。在上一个activity中接受时无法知道这究竟是哪个item啊,貌似是无法返回这个item啊,这就难倒了。。。
有没有什么更好的方法啊,谢谢
item加个唯一的ID属性,返回时把ID也返回,然后把这个ID对应的item设为已读,
谢谢。成功解决问题。非常感谢
#1
启动新activity用 startActivityForResult();
原activity 重写 onActivityResult(int requestCode, int resultCode, Intent data) 方法,在这里修改数据将这条数据设为已读,再刷新adapter
原activity 重写 onActivityResult(int requestCode, int resultCode, Intent data) 方法,在这里修改数据将这条数据设为已读,再刷新adapter
#2
startActivityForResult
#3
通过接口回调把需要做的操作传给Activity 然后Activity再通过startActivityForResult的带返回值的跳转 传给上一个界面
#4
启动新activity用 startActivityForResult();
原activity 重写 onActivityResult(int requestCode, int resultCode, Intent data) 方法,在这里修改数据将这条数据设为已读,再刷新adapter
谢谢回答,成功解决数据传递的问题,之前想过用startActivityForResult但是在context后这个方法一直是红的,把context强制转换成Activity后成功。
但之前自己想的太天真,真的做下来才发现有点问题。
请问一下我能如何获得这是RecycleView中的哪个item,是需要在item的类中添加一个属性来判断是否已读吗?
最后需要根据此重设此item的textview的属性,还是在刷新adapter的时候adapter中判断这个属性更改么?
刚刚开始接触,问题有点多,不好意思,非常感谢
#5
启动新activity用 startActivityForResult();
原activity 重写 onActivityResult(int requestCode, int resultCode, Intent data) 方法,在这里修改数据将这条数据设为已读,再刷新adapter
重新写了一下后,问题变成如何获得这到底是哪一个item,因为我是在item的类中增加了一个属性去判断是否已读,但是在adapter打开的activity中传递过去的是一个item,返回数据是返回了一个标志值。在上一个activity中接受时无法知道这究竟是哪个item啊,貌似是无法返回这个item啊,这就难倒了。。。
有没有什么更好的方法啊,谢谢
#6
启动新activity用 startActivityForResult();
原activity 重写 onActivityResult(int requestCode, int resultCode, Intent data) 方法,在这里修改数据将这条数据设为已读,再刷新adapter
重新写了一下后,问题变成如何获得这到底是哪一个item,因为我是在item的类中增加了一个属性去判断是否已读,但是在adapter打开的activity中传递过去的是一个item,返回数据是返回了一个标志值。在上一个activity中接受时无法知道这究竟是哪个item啊,貌似是无法返回这个item啊,这就难倒了。。。
有没有什么更好的方法啊,谢谢
item加个唯一的ID属性,返回时把ID也返回,然后把这个ID对应的item设为已读,
#7
跳转使用activity.startActivityForResult();
重写Activity的onActivityResult(int requestCode, int resultCode, Intent data) 方法,然后通过data获取传递的数据
重写Activity的onActivityResult(int requestCode, int resultCode, Intent data) 方法,然后通过data获取传递的数据
#8
启动新activity用 startActivityForResult();
原activity 重写 onActivityResult(int requestCode, int resultCode, Intent data) 方法,在这里修改数据将这条数据设为已读,再刷新adapter
重新写了一下后,问题变成如何获得这到底是哪一个item,因为我是在item的类中增加了一个属性去判断是否已读,但是在adapter打开的activity中传递过去的是一个item,返回数据是返回了一个标志值。在上一个activity中接受时无法知道这究竟是哪个item啊,貌似是无法返回这个item啊,这就难倒了。。。
有没有什么更好的方法啊,谢谢
item加个唯一的ID属性,返回时把ID也返回,然后把这个ID对应的item设为已读,
谢谢。成功解决问题。非常感谢