我有一个RecyclerView
,用户必须点击这些元素才能对该特定播放器投票。
由于它不是那么直观,我想在每个元素的右侧添加Button
以让用户了解他是否需要点击投票。
如何制作这样的自定义layout
?可能使用GridLayout
?主要是,当点击按钮(仅限按钮)时,如何获取Button
element
position
?
list_players.xml | http://pastebin.com/F7Ei07x9
two_line_list_item_horizontal.xml | http://pastebin.com/s8qvwqt4
CourseAdapter.java | http://pastebin.com/qZJeimfe
答案 0 :(得分:0)
您可以使用 LinearLayout 为 Recyclerview 项添加按钮,为其提供权重。
您可以在ViewHolder类中处理该按钮的 onClicklistener ,您可以通过 ViewHolder 类中的 getAdapterPosition()获取点击按钮的位置。
根据您的要求:
XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="5">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="ABCD"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="A"/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Vote"/>
</LinearLayout>
适配器:
public class Holder extends RecyclerView.ViewHolder{
Button btnVote;
public Holder(View itemView) {
super(itemView);
btnVote = (Button) itemView.findViewById(R.id.btn_vote);
btnVote.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//list.get(getAdapterPosition()); Use for get the data on selected item
}
});
}
}
答案 1 :(得分:0)
用此替换您的CoursesAdapter的onBindViewHolder。
@Override
public void onBindViewHolder(CoursesViewHolder holder, int position) {
Player player = mArrayCourses.get(position);
holder.name.setText(player.getName());
holder.counter.setText(String.valueOf(player.getCount()));
holder.voteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Do your work here
}
});
}