有一个片段,我在其中从Firebase加载数据。父目录称为“新闻”。他有一个子news1,news2,news(n)。它们包含:imageURL(新闻图片),news_header(新闻标题),newsdate(日期新闻)以及子news_main(家庭新闻),其中包含imageURL和news_text。当我单击新闻时,我需要打开一个新活动并在其中加载有关此新闻的信息。那是news_main。我不使用唯一密钥。标题新闻等已加载到recyclerview中。
适配器代码:
public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.MyViewHolder> {
Context context;
ArrayList<News> news;
public NewsAdapter(Context c, ArrayList<News> n) {
context = c;
news = n;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
return new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.news_view, viewGroup, false));
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
myViewHolder.news_date.setText(news.get(i).getDatenews());
myViewHolder.news_header.setText(news.get(i).getHeader_news());
Picasso.get().load(news.get(i).getImageURL()).into(myViewHolder.news_picture);
}
@Override
public int getItemCount() {
return news.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView news_date, news_header;
ImageView news_picture;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
news_date = (TextView) itemView.findViewById(R.id.news_date);
news_header = (TextView) itemView.findViewById(R.id.news_header);
news_picture = (ImageView) itemView.findViewById(R.id.news_picture);
}
}
}
list = new ArrayList<News>();
reference = FirebaseDatabase.getInstance().getReference().child("News");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
list.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
News n = snapshot.getValue(News.class);
list.add(n);
}
adapter = new NewsAdapter(getContext(), list);
recyclerView.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(getActivity(), "Что то не так", Toast.LENGTH_SHORT).show();
}
});
答案 0 :(得分:1)
您的问题不是很清楚,但是我了解的是您想在单击文本时调用某些内容。
Android上的任何视图都具有setOnClickListener(handler)方法,您只需要获取textview的引用并调用它
news_header.setOnClickListener(new View.OnClickListener() {
int position = getAdapterPosition();
News selected = news.get(position);
// Do whatever you want with the news
}
上面的代码使您可以找到对所选项目的引用。
寻找getAdapterPosition()
答案 1 :(得分:0)
myTextView.setOnClickListener(new View.OnClickListener( your code ));
在您的代码中,您可以插入要单击视图时要调用的任何函数
答案 2 :(得分:0)
您可以使用此功能将ID或其他任何内容传递给文本点击中的其他活动
myTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context,NewActivity.class);
intent.putExtra("id", ""+id);
context.startActivity(intent);
}
});