卡片视图点击卡片移动到新活动

时间:2014-11-22 23:38:39

标签: android cardlayout

我是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);

6 个答案:

答案 0 :(得分:21)

在适配器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));
    }
});

答案 1 :(得分:8)

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

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);
}

这几乎就是从卡上开始新活动所需的全部内容

答案 2 :(得分:1)

您可以使用viewHolder类 如下

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

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

答案 3 :(得分:1)

导入android.view.View;

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

答案 4 :(得分:1)

您可以为类实现View.OnClickListener()接口,然后在onCreate()方法中编写findViewById(R.id.cardview).setOnClickListener(this)。然后,您可以覆盖onClick()方法,并在用户单击卡时执行您想做的事情。

它看起来像这样:

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);
        }
     }
}

答案 5 :(得分:1)

在cardView中添加onClick为我做到了:

     <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">

然后在您的Java函数中调用它,如下所示:

    public void P1_bay(View view) {
    Toast.makeText(this, "You have clicked P1", Toast.LENGTH_LONG).show();
}