2014-11-22 194 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