Je suis nouveau dans la programmation Android et travaillais sur une mise en page de carte. Je me demandais, comment puis-je le rendre cliquable?
Android:clickable="true"
Android:foreground="?android:attr/selectableItemBackground"
Je l'ai sur mon widget de carte et ensuite je voulais savoir où mettre une action cliquable? Je veux pouvoir cliquer sur la carte, elle obtient l'ID de la carte, puis affiche une nouvelle activité d'intention.
Ceci est mon code pour l'activité de chargement de l'adaptateur
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);
Si vous avez utilisé l'implémentation correctement, votre code devrait ressembler à ceci:
card - is the card view you instantiated to display on your ui
card.setOnClickListener(...);
Dans votre implémentation de onClickListener, vous devriez avoir ceci:
@Override
public void onClick(Card c ,View v) {
Intent intent = new Intent(MyActivity.this, NextActivity.class);
startActivity(intent);
}
c'est à peu près tout ce dont vous avez besoin pour commencer une nouvelle activité à partir de la carte
Dans le fichier Java de votre adaptateur et à l'intérieur de "ViewHolder", vous trouverez:
public ContactViewHolder(final View v) {
super(v);
}
Écrire le code de coup:
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
v.getContext().startActivity(new Intent(v.getContext(), YOUR_ACTIVITY_TO_START.class));
}
});
Vous pouvez utiliser la classe viewHolder.
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
itemLayoutView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
// perfoem your action here
}
});
}
importer Android.view.View;
Intention intention = nouvelle intention (view.getContext (), YourActivity.class); View.getContext (). StartActivity (intent);
Vous pouvez implémenter l'interface View.OnClickListener()
dans votre classe, puis dans votre méthode onCreate()
, vous pouvez écrire findViewById(R.id.cardview).setOnClickListener(this)
. Vous pouvez ensuite remplacer la méthode onClick()
et faire ce que vous voulez faire lorsque l'utilisateur clique sur la carte.
Cela ressemblerait à ceci:
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);
}
}
}