I am new to Android programming and was working on a card layout. I was wondering, how do I make it clickable?
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground"
I have that on my card widget and then I wanted to know where to put an on clickable action? I want to be able to click the card, it gets the id of the card, and then displays a new intent activity
This is my code for the activity to load the adapter
setContentView(R.layout.activity_my);
RecyclerView recList = (RecyclerView) findViewById(R.id.cardList);
recList.setHasFixedSize(true);
LinearLayoutManager llm = new LinearLayoutManager(this);
llm.setOrientation(LinearLayoutManager.VERTICAL);
recList.setLayoutManager(llm);
ContactAdapter ca = new ContactAdapter(createList(30));
recList.setAdapter(ca);
If you used the implementation correctly, your code should go like this:
card - is the card view you instantiated to display on your ui
card.setOnClickListener(...);
In your implementation of the onClickListener, you should have this:
@Override
public void onClick(Card c ,View v) {
Intent intent = new Intent(MyActivity.this, NextActivity.class);
startActivity(intent);
}
that is pretty much all you need to start a new activity from the card
In Your Adapter java file and inside of "ViewHolder" you will find:
public ContactViewHolder(final View v) {
super(v);
}
Write blow Code:
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
v.getContext().startActivity(new Intent(v.getContext(), YOUR_ACTIVITY_TO_START.class));
}
});
You can use viewHolder class as follow
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
itemLayoutView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
// perfoem your action here
}
});
}
Addind onClick to the cardView did it for me:
<android.support.v7.widget.CardView
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true"
android:id="@+id/bankcardId"
android:layout_width="160dp"
android:layout_height="190dp"
android:layout_margin="10dp"
android:onClick="P1_bay">
Then call it in your java function as below:
public void P1_bay(View view) {
Toast.makeText(this, "You have clicked P1", Toast.LENGTH_LONG).show();
}
import android.view.View;
Intent intent = new Intent(view.getContext(),YourActivity.class); view.getContext().startActivity(intent);
You could implement the View.OnClickListener()
interface to your class and then in your onCreate()
method you could write findViewById(R.id.cardview).setOnClickListener(this)
. You could then Override the onClick()
method and do what you want to do when the user clicks the card.
It would look like this:
public class MainActivity extends Activity implements View.OnClickListener()
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// load the layout
setContentView(R.layout.filters);
// get the id of the CardView and attach an onClickListener to it
findViewById(R.id.cardList).setOnClickListener(this)
}
@Override
private void onClick(View view)
{
if(view.getId == R.id.cardList)
{
//Do something Like starting an activity
Intent intent = new Intent(MyActivity.this, NextActivity.class);
startActivity(intent);
}
}
}
来源:https://stackoverflow.com/questions/27083837/card-view-click-on-card-move-to-new-activity