Java 如何创建点击文本处理程序?

Java 如何创建点击文本处理程序?,java,android,firebase,firebase-realtime-database,android-recyclerview,Java,Android,Firebase,Firebase Realtime Database,Android Recyclerview,有一个片段,我从firebase加载数据。父目录称为“新闻”。他有一个孩子新闻1,新闻2,新闻(n)。。它们包含:imageURL(新闻图片)、News_标题(新闻标题)、newsdate(日期新闻)和child News_main(家庭新闻)。它包含imageURL和News_文本。我需要,当我点击新闻时,打开一个新的活动并在其中加载关于这个新闻的信息。这是主要新闻。我不使用唯一的密钥。在recyclerview中加载的标题新闻等 适配器代码: public class NewsAdapter

有一个片段,我从firebase加载数据。父目录称为“新闻”。他有一个孩子新闻1,新闻2,新闻(n)。。它们包含:imageURL(新闻图片)、News_标题(新闻标题)、newsdate(日期新闻)和child News_main(家庭新闻)。它包含imageURL和News_文本。我需要,当我点击新闻时,打开一个新的活动并在其中加载关于这个新闻的信息。这是主要新闻。我不使用唯一的密钥。在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);
        }
    }
}
公共类NewsAdapter扩展了RecyclerView.Adapter{ 语境; ArrayList新闻; 公共新闻适配器(上下文c,数组列表n){ 上下文=c; 新闻=n; } @非空 @凌驾 public MyViewHolder onCreateViewHolder(@NonNull ViewGroup ViewGroup,int i){ 返回新的MyViewHolder(LayoutInflater.from(context).充气(R.layout.news_视图,视图组,false)); } @凌驾 public void onBindViewHolder(@NonNull MyViewHolder MyViewHolder,int i){ myViewHolder.news\u 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\u图片); } @凌驾 public int getItemCount(){ returnnews.size(); } 类MyViewHolder扩展了RecyclerView.ViewHolder{ text查看新闻\日期,新闻\标题; ImageView新闻图片; 公共MyViewHolder(@NonNull View itemView){ 超级(项目视图); news\u date=(TextView)itemView.findViewById(R.id.news\u date); news\u header=(TextView)itemView.findViewById(R.id.news\u header); news\u picture=(ImageView)itemView.findviewbyd(R.id.news\u picture); } } }

list=newarraylist();
reference=FirebaseDatabase.getInstance().getReference().child(“新闻”);
addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
list.clear();
对于(DataSnapshot快照:DataSnapshot.getChildren()){
News n=snapshot.getValue(News.class);
列表。添加(n);
}
adapter=NewsAdapter(getContext(),list);
recyclerView.setAdapter(适配器);
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
Toast.makeText(getActivity(),“Toast.LENGTH”SHORT.show();
}
});

你的问题不是很清楚,但我的理解是,当你点击文本时,你想调用一些东西

android上的任何视图都有一个setOnClickListener(处理程序)方法,您只需要获取textview的引用并调用它

news_header.setOnClickListener(new View.OnClickListener() {
    int position = getAdapterPosition();
    News selected = news.get(position);
    // Do whatever you want with the news
}
上面的代码可以让您找到对所选项目的引用。 通过查找
getAdapterPosition()


在代码中,您可以插入在单击视图时要调用的任何函数

您可以使用此函数在文本单击时将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);
    }
});

请添加您的数据库结构和添加侦听器所依据的引用。添加的数据库结构当您单击新闻文本时,我需要打开一个包含此新闻主要文章的新活动。对不起,我的英语)我已使用更正的信息更新了我的答案我知道此方法,我需要将该值传输到片段以加载“main_news”,类似于“reference=FirebaseDatabase.getInstance().getReference(“news”).child(“main_news”)”,但它不正确…我需要在数据库中添加新的子项,或者我可以将其用作标识符“News1”、“News2”您应该在数据库中添加unique作为子项,但也可以使用“News1”、“News2”。只需将这些内容传递给新活动,并在新活动中收听该路径。
myTextView.setOnClickListener(new View.OnClickListener( your code ));
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);
    }
});