我正在使用Gabrielemariotti的Cardslib库在我的Android应用程序中实现卡片布局。我正在为我的卡片使用自定义布局。以下是创建自定义卡片的代码:
Card card = new Card(getActivity().getApplicationContext(), R.layout.status_card);
card.setTitle("sample title");
我的卡底部有三个按钮(如Facebook安卓应用中的按钮)。我想为这些按钮设置onClickListener。但我不知道该怎么做。
请在这里帮助我。
谢谢,
答案 0 :(得分:1)
您必须定义布局。
然后使用此布局创建Card
,并覆盖setupInnerViewElements
方法。
在此方法中,您可以在按钮上定义OnClickListener
,并且可以访问所有卡的值。
public class CustomCard extends Card {
/**
* Constructor with a custom inner layout
*
* @param context
*/
public CustomCard(Context context) {
super(context, R.layout.carddemo_mycard_inner_content);
}
@Override
public void setupInnerViewElements(ViewGroup parent, View view) {
//Retrieve button
Button myButton = (Button) view.findViewById(R.id.myButton);
if (myButton != null) {
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "Click Listener card=" + getId(),
Toast.LENGTH_LONG).show();
}
});
}
}
}
答案 1 :(得分:0)
我有一个简单的解决方案。
因此,添加onClick侦听器的另一种方法是通过XML,这更容易一些。
在按钮的xml中,添加以下行:
android:onClick="methodName"
其中'methodName'显然是方法的名称。只要单击按钮,这将调用该方法。下一步是显而易见的 - 只需进入您的java活动并创建您想要调用的方法,确保将View作为参数。所以你的活动课中会有这样的东西:
public void methodName(View view) {
Log.v("appTag","BUTTON WAS PRESSED");
//whatever you want to do here
}
这是创建整个onClickListener的快捷方式。
希望有所帮助。祝你好运:)
编辑:
请记住,你在这里传递了一个视图,所以你可以从那个视图中获得你想要的任何东西。既然你评论说你需要从你的卡片中取出文本,我会告诉你如何做到这一点。
以下是此案例的方法:
public void methodName(View view) {
Log.v("appTag","BUTTON WAS PRESSED");
TextView textFromCard = view.findViewById(R.id.THE_ID_YOU_GAVE_YOUR_TEXTVIEW_IN_THE_XML);
String textFromTextView = textFromCard.getText().toString();
//do whatever you want with the string here
}