ここ数日、質問があります。基本的に、TabActivity、Fragment A、Fragment B、および Fragment C に 3 つのフラグメントがあります。3 つの Fragments にはすべて、1 つの Fragment に約 14 の CardView の CardView のリストが含まれています。この 3 つの Fragment は、同じ ID を持つ同じ cardview で同じレイアウトを共有します。各 CardView にはボタンがあり、そのボタンをクリックすると別のアクティビティを開始したいと考えています。しかし、ボタンのIDが同じで、そのボタンが別のフラグメントからクリックされたときにアクティビティを開始したいので、できません。これには RecyclerView を使用しています。これは、フラグメントに 14 個のボタンがあり、フラグメントが 3 つあることを意味します。
2 に答える
1
アクティビティにオンクリック リスナーを実装します。ボタンをクリックするたびに、レイアウトで必要な変更をプログラムで行います。
以下の例
public void onClick(View v)
{
switch(v.getId())
{
case R.id.button1:
// Do something
break;
case R.id.button2:
// Do something
break;
case R.id.button3:
// Do something
}
}
于 2016-07-03T10:41:34.667 に答える
0
ボタンが recyclerView にある場合、そのボタンのクリック リスナーを XML で設定できます。これは Your Activity で呼び出されます。次に、recyclerView アダプターで、セルの位置となるタグをボタンに設定します。
holder.imageButton.setTag(position);
次に、メイン アクティビティで、次の名前の整数変数を作成します。
int currentSelectedTab = 0;
次に、TabChange リスナーでこれを行います。;
mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
selectedTab = position;
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
これで、常に現在選択されている tabPosition が表示されます。
そして、アクティビティのクリックリスナーでこれを行います::
public void myOnClick(View v) {
if(current selectedTab == 1)
{
if(v.getId === R.id.btn1)
{
// it means btn of Fragment 1 is clicked
// same goes for other button clicks
// and for the index of button
// v.getTag() it will you which cell's button was clicked
}
あなたの cardView xml で:
<ImageButton
android:id="@+id/chapter_description"
android:layout_width="36dp"
android:onClick="myOnClick"
android:layout_height="36dp"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:src="@drawable/description"
android:background="@drawable/ripple_effect"/>
于 2016-07-03T11:10:00.417 に答える