2014-11-22 199 views
10

我是新来的Android编程和正在制定一个卡布局。我想知道,我如何使它可点击?卡片视图点击卡片移动到新活动

android:clickable="true" 
android:foreground="?android:attr/selectableItemBackground" 

我在卡片小部件上有这个,然后我想知道在哪里放置可点击的动作?我希望能够点击该卡,它得到了卡的ID,然后显示一个新的意图活动

这是我的活动代码来加载适配器

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); 
+0

也许你可以从这里得到一些想法 - > http://stackoverflow.com/questions/24471109/recyclerview-onclick – Alfaplus 2014-12-04 11:32:57

回答

6

如果您使用实施正确的,你的代码应该是这样的:

card - is the card view you instantiated to display on your ui 


card.setOnClickListener(...); 

在你执行onClickListener的,你应该有这样的:

@Override 
public void onClick(Card c ,View v) { 
    Intent intent = new Intent(MyActivity.this, NextActivity.class); 
    startActivity(intent); 
} 

这几乎是所有你需要从卡

+1

我不知道如果我没有正确地执行它。我有一个回收站视图,在它内部使用CardView小部件填充它。每当我尝试做一个recList(回收站列表的变量)并设置一个onClicklistener,我似乎无法获得onClick(卡C,视图v)我只能得到onClick(查看v) – NexusOnly 2014-11-23 00:02:10

+0

此答案未能解决上下文。请参阅Mahdi的回答正确答案。您必须通过其中一个视图获取上下文(例如,卡上的文本视图)。 – seekingStillness 2018-01-14 20:19:45

14

开始一个新的活动在适配器的Java文件和内部“ViewHolder”,你会发现:

public ContactViewHolder(final View v) { 
     super(v); 

    } 

写吹代码:

v.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       v.getContext().startActivity(new Intent(v.getContext(),your_activity_to_start.class)); 
      } 
     }) 
+0

这应该是被接受的答案 – seekingStillness 2018-01-14 20:15:38

1

您可以使用viewHolder类 如下

public ViewHolder(View itemLayoutView) { 
     super(itemLayoutView); 

     itemLayoutView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) 
      { 
      // perfoem your action here 
      } 
     }); 
    } 
1

import android.view.View;

Intent intent = new Intent(view.getContext(),YourActivity.class); view.getContext()。startActivity(intent);

+0

为代码添加上下文...和语法高亮显示。 – coatless 2017-01-02 22:21:32