如何添加点击听众回收器查看了孩子?

问题描述 投票:1回答:2

这里是我的discussion.java其中包含RecyclerView

public class Discussion extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_discussion);
        RecyclerView mRecycleview =(RecyclerView)findViewById(R.id.cycleview);
        mRecycleview.setLayoutManager(new LinearLayoutManager(this));
        String[] use ={"a","b"};
        String[] lo={"be","ndls"};
        String[] ti={"12:00","11:00"};
        String[] staus={"Today","Tommmorow"};
        int[] posimg={R.drawable.img_post1,R.drawable.img_post2};

        mRecycleview.setAdapter(new FeedAdapter(use,lo,ti,staus,posimg));
        @NonNull
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Open Activity for posting", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });

        // Functionality for poll
    }
}

这里是我是从资源布局文件FeedAdapter服用RecyclerView content.xml

public class FeedAdapter extends 
    RecyclerView.Adapter<FeedAdapter.FeedViewHolder> {

    private  String[] userdata;
    private  String[] locdata;
    private  String[] timedata;
    private  int[]   postdata;
    private  String[] statusdata;

    public  FeedAdapter(String[] userdata,String[] locdata,String[] timedata,String[] statusdata,int[] postdata){
        this.userdata=userdata;
        this.locdata=locdata;
        this.postdata=postdata;
        this.statusdata=statusdata;
        this.timedata=timedata;
    }

    @Override
    public FeedViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater=LayoutInflater.from(parent.getContext());
        View view =inflater.inflate(R.layout.backupofcontent,parent,false);
        return new FeedViewHolder(view);
    }

    @Override
    public void onBindViewHolder( FeedAdapter.FeedViewHolder holder, int position) {
        String user=userdata[position];
        String loc=locdata[position];
        String time=timedata[position];
        String status=statusdata[position];
        int post=postdata[position];
        holder.username.setText(user);
        holder.locationa.setText(loc);
        holder.timea.setText(time);
        holder.statusa.setText(status);
        if(post==0)
            holder.postimg.setVisibility(View.GONE);
        else
            holder.postimg.setImageResource(post);
    }

    @Override
    public int getItemCount() {
        return userdata.length;
    }

    public class FeedViewHolder extends RecyclerView.ViewHolder{

        ImageView postimg;
        TextView username;
        TextView locationa;
        TextView timea;
        TextView statusa;

        public FeedViewHolder(View itemView) {
            super(itemView);
            postimg=itemView.findViewById(R.id.imgView_postPic);
            username=itemView.findViewById(R.id.user_name);
            locationa=itemView.findViewById(R.id.Location);
            timea=itemView.findViewById(R.id.Time);
            statusa=itemView.findViewById(R.id.post_text);
        }
    }
}

这里是我的content.xml从适配器走的是饲料。我想建立在视图onClickListnerid:likelayout"like使得单击时,一些动作将被执行。现在,敬酒就足够了。

请帮助我如何做到这一点。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout

    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:orientation="vertical"
    tools:showIn="@layout/app_bar_main"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/user_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center|center_vertical"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="4dp"
        android:text="User"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/Time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/user_name"
        android:layout_gravity="center|center_vertical"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="4dp"
        android:text="Time"
        android:textSize="10sp" />

    <TextView
        android:id="@+id/Location"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/Time"
        android:layout_gravity="center|center_vertical"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="4dp"
        android:text="Location"
        android:textSize="10sp" />

    <LinearLayout
        android:id="@+id/layout_post"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/Location"
        android:layout_marginTop="10dp"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/imgView_postPic"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:scaleType="fitCenter"
            android:src="@drawable/img_post1" />

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="55dp"
            android:layout_weight="1">

            <TextView
                android:id="@+id/post_text"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Status " />
        </ScrollView>

    </LinearLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:layout_marginBottom="10dp"
        android:gravity="center_vertical"
        android:layout_above="@id/bottomnav">

        <TextView
            android:id="@+id/likecount"
            android:layout_marginLeft="20dp"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="0"
            android:gravity="center" />
        <TextView
            android:id="@+id/likecounttext"
            android:layout_toRightOf="@id/likecount"
            android:layout_marginLeft="10dp"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="Liked"/>
        <TextView
            android:layout_toRightOf="@id/likecounttext"
            android:layout_marginLeft="15dp"
            android:id="@+id/countsepartor"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="|"/>
        <TextView
            android:id="@+id/commentcount"
            android:layout_marginLeft="15dp"
            android:layout_toRightOf="@id/countsepartor"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="0"/>
        <TextView
            android:layout_marginLeft="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/commentcount"
            android:text="Comments"/>

    </RelativeLayout>
    <LinearLayout
        android:id="@+id/bottomnav"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:weightSum="3"
        android:layout_marginBottom="5dp"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal">

        <LinearLayout
            android:id="@+id/likelayout"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_marginLeft="5dp"
            android:layout_gravity="center_vertical"
            android:layout_height="wrap_content">
            <ImageView
                android:layout_width="25dp"
                android:layout_height="wrap_content"
                android:src="@drawable/like"/>
            <TextView
                android:id="@+id/like"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Like"
                android:layout_marginLeft="10dp"
                android:layout_gravity="center_vertical"
                android:textSize="15sp"/>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/commentlayout"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_gravity="center_vertical"
            android:layout_height="wrap_content">
            <ImageView
                android:layout_width="25dp"
                android:layout_height="wrap_content"
                android:src="@drawable/comment"/>
            <TextView
                android:id="@+id/comment"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Comment"
                android:layout_marginLeft="10dp"
                android:layout_gravity="center_vertical"
                android:textSize="15sp"/>
        </LinearLayout>
        <LinearLayout
            android:id="@+id/polllayout"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:gravity="center"
            android:layout_gravity="center_vertical"
            android:layout_height="wrap_content">
            <ImageView
                android:layout_width="25dp"
                android:layout_height="wrap_content"
                android:src="@drawable/poll"/>
            <TextView
                android:id="@+id/poll"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Poll"
                android:layout_marginLeft="10dp"
                android:layout_gravity="center_vertical"
                android:textSize="15sp"/>
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>
java android android-recyclerview onitemclicklistener
2个回答
0
投票

相同其它视图,在FeedViewHolder类添加LinearLayout变量:

LinearLayout like;

然后

like = itemView.findViewById(R.id.likelayout);

然后在onBindViewHolder使用:

holder.like.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                // Like Layout was clicked
            }
        });

1
投票

在你onBindViewHolder功能,只需添加一个点击监听,像下面这样。

@Override
public void onBindViewHolder( FeedAdapter.FeedViewHolder holder, int position) {
    String user=userdata[position];
    String loc=locdata[position];
    String time=timedata[position];
    String status=statusdata[position];
    int post=postdata[position];
    holder.username.setText(user);
    holder.locationa.setText(loc);
    holder.timea.setText(time);
    holder.statusa.setText(status);

    if(post==0)
        holder.postimg.setVisibility(View.GONE);
    else
        holder.postimg.setImageResource(post);

    holder.username.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            // Do something. 
        }
    });
}

如果你想点击监听器设置到列表项的其他UI元素,然后就宣布他们像您已声明username的方式,timeastatusa等,然后将监听器添加到它。

请记住,为了使一个ImageView点击你需要添加clickable属性,在布局文件发送给true。例如,如果你需要让你喜欢的图像可点击,您需要添加clickable属性如下所示。

<ImageView
    android:id="@+id/like_image"
    android:layout_width="25dp"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:src="@drawable/like"/>

为了显示上单击项Toast,你需要有Context活动Discussion,而你正在创建的适配器。所以,我想建议你修改类似下面的适配器的构造。

public class FeedAdapter extends 
    RecyclerView.Adapter<FeedAdapter.FeedViewHolder> {

    private  String[] userdata;
    private  String[] locdata;
    private  String[] timedata;
    private  int[]   postdata;
    private  String[] statusdata;

    // Add another extra variable to store context
    // The context is necessary for showing toast
    private Context context; 

    public  FeedAdapter(String[] userdata, String[] locdata,String[] timedata, String[] statusdata, int[] postdata, Context context){
        this.userdata = userdata;
        this.locdata = locdata;
        this.postdata = postdata;
        this.statusdata = statusdata;
        this.timedata = timedata;
        this.context = context; // Initialize it here
    }

    @Override
    public FeedViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater=LayoutInflater.from(parent.getContext());
        View view =inflater.inflate(R.layout.backupofcontent,parent,false);
        return new FeedViewHolder(view);
    }

    @Override
    public void onBindViewHolder( FeedAdapter.FeedViewHolder holder, int position) {
        String user=userdata[position];
        String loc=locdata[position];
        String time=timedata[position];
        String status=statusdata[position];
        int post=postdata[position];
        holder.username.setText(user);
        holder.locationa.setText(loc);
        holder.timea.setText(time);
        holder.statusa.setText(status);

        if(post==0)
            holder.postimg.setVisibility(View.GONE);
        else
            holder.postimg.setImageResource(post);

        // Use the context here to show the Toast 
        holder.username.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(context, "Something", Toast.LENGTH_LOGN).show();
            }
        });
    }

    @Override
    public int getItemCount() {
        return userdata.length;
    }

    public class FeedViewHolder extends RecyclerView.ViewHolder{

        ImageView postimg;
        TextView username;
        TextView locationa;
        TextView timea;
        TextView statusa;

        public FeedViewHolder(View itemView) {
            super(itemView);
            postimg=itemView.findViewById(R.id.imgView_postPic);
            username=itemView.findViewById(R.id.user_name);
            locationa=itemView.findViewById(R.id.Location);
            timea=itemView.findViewById(R.id.Time);
            statusa=itemView.findViewById(R.id.post_text);
        }
    }
}

并通过修改后的构造变化,适配器需要像您Discussion类以下被初始化。

mRecycleview.setAdapter(new FeedAdapter(use, lo, ti, staus, posimg, this));

希望帮助!

© www.soinside.com 2019 - 2024. All rights reserved.