gpt4 book ai didi

android - 在使用 recyclerView 填充的 cardView 中为按钮添加点击监听器

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:31:41 26 4
gpt4 key购买 nike

我有一个卡片 View

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>

MainActivity.class

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);
}
}

MyAdapter.class

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);
}
}
}

我实际上想为卡片内的按钮设置点击监听器,并根据按下的按钮和按下的卡片启动新 Activity 。有没有办法做到这一点?我环顾四周,但没有找到为 cardView 内的项目设置点击监听器的任何答案。我是 android 的新手,我们将不胜感激。提前致谢

最佳答案

Add click listener for button inside a cardView populated using a recyclerView

RecyclerView 中的按钮添加点击事件:

1. 从 xml 中获取 Button,方法与 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
}
});
}

关于android - 在使用 recyclerView 填充的 cardView 中为按钮添加点击监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28379302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com