java - 单击 Cardview 时如何在另一个活动中显示详细信息
问题描述
我有一个问题,如何cardView
根据其位置显示其值?我觉得我有点错过了什么。
这是我的代码
@Override
public void onBindViewHolder(AnnouncementViewHolder holder, int position) {
AnnouncementModel announcement = announcementList.get(position);
if (announcement.getImage()!=null && !announcement.getImage().isEmpty()){
Picasso.get()
.load(announcement.getImage())
// To fit image into imageView
.fit()
// To prevent fade animation
.noFade()
.into(holder.imageView);
}else{
//Do nothing
}
holder.textViewDate.setText(announcement.getDate());
holder.textViewTitle.setText(announcement.getTitle());
holder.textViewExcerpt.setText(announcement.getExcerpt());
}
@Override
public int getItemCount() {
return announcementList.size();
}
class AnnouncementViewHolder extends RecyclerView.ViewHolder {
TextView textViewTitle, textViewExcerpt,textViewDate;
ImageView imageView;
public AnnouncementViewHolder(View itemView) {
super(itemView);
textViewDate = itemView.findViewById(R.id.textAnnouncementDate);
textViewTitle = itemView.findViewById(R.id.textAnnouncementDesc);
textViewExcerpt = itemView.findViewById(R.id.textAnnouncementDesc);
imageView = itemView.findViewById(R.id.AnnouncementImageView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = v.getContext();
Intent intent = new Intent(context, DetailActivityAnnouncement.class);
intent.putExtra(DetailActivity.EXTRA_POSITION, getAdapterPosition());
context.startActivity(intent);
}
});
}
}
我想在点击时显示我textViewDate
的textViewTitle
其他活动。
这是我的detailActvity
public class DetailActivity extends AppCompatActivity {
public static final String EXTRA_POSITION = "position";
AnnouncementModel model;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail_announcement);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
int postion = getIntent().getIntExtra(EXTRA_POSITION, 0);
TextView announcementContent = (TextView) findViewById(R.id.textAnnouncementContext);
TextView announcementDate = (TextView) findViewById(R.id.textAnnouncementDate);
ImageView announcementImage = (ImageView) findViewById(R.id.AnnouncementImageView);
TextView announcementOtherDetails = (TextView) findViewById(R.id.textAnnouncementOtherDetails);
}
}
我觉得我已经接近我的答案,但我仍然卡住了。任何帮助将非常感激。
解决方案
您可以使用意图将数据从一个活动发送到另一个活动。
在您itemView.setOnClickListener()
已经定义了打开您的DetailActivity
.
现在您需要做的就是添加数据,例如
Context context = v.getContext();
Intent intent = new Intent(context, DetailActivityAnnouncement.class);
intent.putExtra(DetailActivity.EXTRA_POSITION, getAdapterPosition());
// putExtra can be used to send data with intent, here "date"
// and "title" is key that we will need later to access these values
intent.putExtra("date",announcementList.get(getAdapterPosition()).getDate());
intent.putExtra("title", announcementList.get(getAdapterPosition()).getTitle());
context.startActivity(intent);
在您的方法DetailActivity
中,您可以检索此信息onCreate
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail_announcement);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
int postion = getIntent().getIntExtra(EXTRA_POSITION, 0);
//you can retrieve data from intent like
String textViewDate = getIntent().getStringExtra("date");
String textViewTitle = getIntent().getStringExtra("title");
TextView announcementContent = (TextView) findViewById(R.id.textAnnouncementContext);
TextView announcementDate = (TextView) findViewById(R.id.textAnnouncementDate);
ImageView announcementImage = (ImageView) findViewById(R.id.AnnouncementImageView);
TextView announcementOtherDetails = (TextView) findViewById(R.id.textAnnouncementOtherDetails);
}
额外:-您应该始终检查您是否收到了来自意图的数据,并确保textViewDate, textViewTitle
它不为空。
您还可以在检索活动中的数据之前进行检查,例如if(getIntent().hasExtra("date"))
如果您有数据,那么它将是真实的。
推荐阅读
- c# - 如何验证此模糊搜索结果?
- r - 如何使用 ggsurvplot 添加线条以突出显示点?
- java - 如何在springboot中为Json构建Java Pojo
- linux - Amazon EC2 Linux 实例(SSH、PuTTY 等)的默认用户名是什么?
- node.js - Discord js bot在centos上太慢了
- pytorch - AttributeError:模块'torch._six'没有属性'PY3'
- typescript - FlatList onPress 到带有数据的不同屏幕
- flutter - 没有为 BehaviorSubject<> 类型定义 getter 'value'
- python - 在 nsmallest pandas 之后更改列中的值
- javascript - 批量下载一堆文件,限制下载大小为 100 KB