我有一张卡片
card_contents.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<android.support.v7.widget.CardView android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_marginTop="10dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:id="@+id/card_view">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffa3a4a6">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/card_text"
android:layout_gravity="center"
android:gravity="center"
android:text="B.E"
android:layout_centerInParent="true"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:id="@+id/button1"
android:layout_toLeftOf="@+id/view"
android:layout_alignParentLeft="true"
android:text="2010"
android:textColor="#000000"
android:background="@android:color/transparent"
/>
<View
android:layout_width="2dp"
android:layout_height="@dimen/abc_action_button_min_height_material"
android:layout_centerHorizontal="true"
android:id="@+id/view"
android:background="@android:color/black"
android:layout_alignParentBottom="true"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button2"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_toRightOf="@+id/view"
android:background="@android:color/transparent"
android:textColor="@android:color/black"
android:text="2014"/>
</RelativeLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
主要活动。班
public class MainActivity extends ActionBarActivity {
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<String> list=new ArrayList<String>();
list.add("Hello");
list.add("Hello World");
list.add("Hello World Beings");
recyclerView=(RecyclerView)findViewById(R.id.recycler_view);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager layoutManager=new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
RecyclerView.Adapter adapter=new MyAdapter(list);
recyclerView.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
我的适配器。班
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
List<String> list;
public MyAdapter(List<String> list){
this.list=list;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v=LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_contents,viewGroup,false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(MyViewHolder myViewHolder, int i) {
myViewHolder.textView.setText(list.get(i));
}
@Override
public int getItemCount() {
return list.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder{
TextView textView;
MyViewHolder(View view){
super(view);
this.textView= (TextView) view.findViewById(R.id.card_text);
}
}
}
我实际上想为卡片内的按钮设置点击监听器,并根据按下的按钮和按下的卡片启动新的活动。有没有办法做到这一点?我环顾四周,但没有找到任何答案,为卡视图内的项目设置点击监听器。我是新的Android和任何帮助将不胜感激。提前感谢
假设你有:
<android.support.v7.widget.CardView
android:id="@+id/cv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:elevation="4dp"
app:cardCornerRadius="2dp">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="16dp">
<TextView
android:id="@+id/listText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:padding="8dp"
android:text="New Text" />
<ImageButton
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/listText"
android:layout_alignParentRight="true"
android:onClick="onClickBotonBorrar"
android:background="?android:selectableItemBackground"
android:src="@drawable/ic_action_borrar" />
</RelativeLayout>
</android.support.v7.widget.CardView>
注意这部分:android:onclickBotonBorrar
在您的活动中添加以下内容:
public void onClickBotonBorrar (View v) {
//Do whatever you want when user clicks on your ImageButton
}
建议不要将单击事件放在适配器中,而是放在活动中。
注意:按钮类似
在CustomAdapter中的onBindViewHolder方法上定义您的onClark监听器。
在使用recyclerView填充的cardView中添加click listener for按钮
添加单击事件到按钮中的回收站视图中:
1.从xml中获取按钮,方法与在MyViewHolder
类中对TextView
执行相同:
public static class MyViewHolder extends RecyclerView.ViewHolder{
TextView textView;
Button btnButton1;
MyViewHolder(View view){
super(view);
this.textView= (TextView) view.findViewById(R.id.card_text);
this.btnButton1= (Button) view.findViewById(R.id.button1);
... do same for other Button
}
}
2.在onBindViewHolder方法中为Button添加setOnClickListener
方法:
@Override
public void onBindViewHolder(MyViewHolder myViewHolder, int i){
myViewHolder.textView.setText(list.get(i));
myViewHolder.btnButton1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
/// button click event
}
});
}
我正在构建一个聊天应用程序,并使用 RecyclerView 呈现消息。由于这是一个聊天应用程序,最后的消息应显示在列表的底部。为了实现这一点,我通过以下方式使用LinearManager: 如果对话中有很多信息,它也能很好地工作。但是,如果用户之间只有一两条消息,RecyclerView会将它们显示在屏幕底部,并在它们上方留出空白。 在这种情况下,是否可以在屏幕顶部显示回收器项目?
我在带有网格布局管理器的回收器视图中有一个卡片视图。我想删除卡片之间的空间,但也要保留卡片的特定宽度。 这是我的布局活动: 这是我的名片:
我需要制作一个可扩展的 ,每次点击只能打开一个项目(所有其他项目都必须关闭)。我知道有可能在的帮助下做到这一点,然后使用下一个代码: 但是有没有办法使用来做同样的事情?
我想有一个固定行数的recyclerView,不可滚动,每行有一个固定的高度,以及填充所有屏幕。例如,我有4行,所以行高应该是recyclerView height/4。 行布局。xml 回收人员视图: java代码: 有什么想法吗?
FolderListAdapter代码 RecyclerView的Mainactive代码 回收器视图的XML代码 folderList的大小为2 我还检查了适配器的大小。它也是2,我不知道我在哪里犯了错误,为什么它现在在活动中什么都没有显示
单击时的卡片视图正在工作。但回收器视图的区域不可单击。如何使其可点击,以便捕获卡片视图的事件。