2017-03-22 4 views
-2

CardViewをメニューのコンテナとして使用しようとしています。カードにはボタンが表示されます。 RecyclerViewを使用せずに各ボタンにクリックリスナーを実装することは可能ですか?RecyclerViewを使用しないボタン付きCardView - Android

作成中にボタンにクリックリスナーを適用すると、CardViewに追加されてCardViewに追加される前にクリックリスナーが機能しません。カード自体はクリック可能なままです

+0

を試すことができますので、我々は –

+0

はい、 あなたはメニュー項目としてcardviewを使用することはできますが、レイアウトの代わりにメニューを使用する必要がありますを助けることができるいくつかのコードを置きます。 個別クリックを実装する必要があります。 – ViramP

+0

これを一度確認してください:http://android-coding.blogspot.in/2014/01/drawerlayout-with-custom-layoutview.html – ViramP

答えて

0

この例では、カードビューに2つのボタンが追加されています。各ビューには個別のクリックリスナがあります。あなたはthis-

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 
    private String TAG = "MainActivity"; 
    Button btn_first, btn_second; 
    CardView cardView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     cardView = (CardView) findViewById(R.id.cardview); 
     cardView.setOnClickListener(this); 

     btn_first = (Button)findViewById(R.id.btn_first); 
     btn_second = (Button)findViewById(R.id.btn_second); 
     btn_first.setOnClickListener(this); 
     btn_second.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View view) { 
     switch (view.getId()) { 
      case R.id.btn_first: 
       Toast.makeText(this, "First Button", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.btn_second: 
       Toast.makeText(this, "Second Button", Toast.LENGTH_SHORT).show(); 
       break; 
      case R.id.cardview: 
       Toast.makeText(this, "CardView", Toast.LENGTH_SHORT).show(); 
       break; 
     } 
    } 
} 
0
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_splash" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="app.module.taman.splash.mvp.SplashActivity"> 

    <android.support.v7.widget.CardView 
     android:id="@+id/card" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <Button 
      android:id="@+id/button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_margin="10dp" 
      android:filterTouchesWhenObscured="true" 
      android:text="Click me !!" /> 

    </android.support.v7.widget.CardView> 


</RelativeLayout> 

コード

Button button = (Button) findViewById(R.id.button); 
     CardView cardView = (CardView) findViewById(R.id.card); 


     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(SplashActivity.this, "ButtonClicked", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     cardView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(SplashActivity.this, "card clicked", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
関連する問題