【问题标题】:Card View Click on Card Move To New Activity卡片视图单击卡片移动到新活动
【发布时间】:2014-11-22 23:38:39
【问题描述】:

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

【问题讨论】:

标签: android cardlayout


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 我不知道我是否正确实现了它。我有一个回收站视图,在其中我用 CardView 小部件填充它。每当我尝试做一个recList(回收者列表的变量)并设置一个onClicklistener时,我似乎无法获得onClick(card C,view v)我只得到onClick(view v)
    • 此答案未能解决上下文。正确答案见马赫迪的回答。您必须通过其中一个视图(例如卡片上的文本视图)获取上下文。
    【解决方案3】:

    将 onClick 添加到 cardView 为我做了:

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

    【讨论】:

      【解决方案4】:

      您可以使用 viewHolder 类 如下

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

      【讨论】:

        【解决方案5】:

        导入android.view.View;

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

        【讨论】:

          【解决方案6】:

          您可以为您的类实现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);
                  }
               }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-01-07
            • 2020-08-19
            • 2018-04-06
            • 2019-10-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多