首页 > 解决方案 > 如何在 FAB 点击的单独活动中显示收藏的内容?

问题描述

在此处输入图像描述

这是我的回收商查看适配器的 HEART(Toggle Button) 代码:

    holder.toggle_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (toggleModel.isFavorite) {
                toggleModel.setFavorite(false);
                Toast.makeText(context, "UNFavorited", Toast.LENGTH_SHORT).show();

            }
            else {
                toggleModel.setFavorite(true);
                Toast.makeText(context, "Favorited", Toast.LENGTH_SHORT).show();
                Toast.makeText(context, holder.textView.getText().toString().trim(), Toast.LENGTH_SHORT).show();
            }

            notifyItemChanged(position);

        }
    });

这是 custom_layout.xml 的布局文件:

<LinearLayout
    android:id="@+id/l1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_margin="10dp"
        android:textIsSelectable="true"
        android:textColor="#000000"
        android:gravity="center"
        android:maxLines="100"
        android:fontFamily="sans-serif-condensed-medium"
        android:text="This is Arabic Text"
        android:textSize="20sp" />

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginTop="2dp"
        android:layout_marginBottom="2dp"
        android:background="@android:color/darker_gray" />

    <LinearLayout
        android:id="@+id/l2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="6dp"
        android:layout_marginBottom="6dp"
        android:weightSum="4">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/copybutton"
            android:src="@drawable/ic_content_copy_black_24dp" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/share_txt"
            android:src="@drawable/ic_share_black_24dp" />

        <ImageView
            android:layout_width="40dp"
            android:layout_height="30dp"

            android:id="@+id/whatsApp_txt"
            android:layout_weight="1"
            android:src="@drawable/whats" />


        <ToggleButton
            android:id="@+id/toggle_btn"
            android:layout_width="10dp"
            android:layout_height="25dp"
            android:layout_weight="1"
            android:background="@drawable/unfavorite"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:textOff=""
            android:textOn="" />

    </LinearLayout>

这是浮动操作按钮代码:

     fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(getActivity(), "FAB", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getActivity(), FavoritedActivity.class);
startActivity(intent);


            }
        });

这是模型类代码:

public class ToggleModel {

int toggled = R.drawable.favorited;
int untoglled = R.drawable.unfavorite;
Boolean isFavorite = false;
String title;

public ToggleModel(String title) {
    this.title = title;
}

public int getToggled() {
    return toggled;
}

public int getUntoglled() {
    return untoglled;
}

public String getTitle() {
    return title;
}

public void setFavorite(boolean favorite) {
    isFavorite = favorite;
}

public boolean isFavorite() {
    return isFavorite;
}

}

单击 FAB 后,如何在单独的活动中显示收藏的内容。

请提供您宝贵的意见/建议

标签: android

解决方案


首先,使您的ToggleModel可序列化以传递数据Intent

public class ToggleModel implements Serializable {
    ...
}

然后找出最喜欢的项目并将其传递给下一个活动。

fab.setOnClickListener(new View.OnClickListener() { 
    @Override public void onClick(View view) { 
        Toast.makeText(getActivity(), "FAB", Toast.LENGTH_SHORT).show(); 

        ArrayList<ToggleModel> favoriteList = new ArrayList<>();
        for(ToggleModel model: toggleModelList) {
            if(model.isFavorite())
                favouriteList.add(model);
        }

        Intent intent = new Intent(getActivity(), FavoritedActivity.class);
        intent.putExtra("FAVOURITE_LIST", (Serializable) favouriteList);
        startActivity(intent); 
    } 
});

然后在您FavoritedActivityonCreate尝试中从 Intent 中获取价值。

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_favorite);

    ArrayList<ToggleModel> favoriteList = (ArrayList<ToggleModel>) getIntent().getSerializableExtra("FAVOURITE_LIST"); 

    //Your favorite list is here. Now call the adapter and attach with recyclerview to show this

    ...
}

如果您只想获取文本,例如title,请按照以下步骤操作:

fab.setOnClickListener(new View.OnClickListener() { 
    @Override public void onClick(View view) { 
        Toast.makeText(getActivity(), "FAB", Toast.LENGTH_SHORT).show(); 

        ArrayList<String> favoriteList = new ArrayList<>();
        for(ToggleModel model: toggleModelList) {
            if(model.isFavorite())
                favouriteList.add(model.getTitle());
        }

        Intent intent = new Intent(getActivity(), FavoritedActivity.class);
        intent.putStringArrayListExtra("FAVOURITE_LIST", favouriteList);
        startActivity(intent); 
    } 
});

然后FavoritedActivityonCreate

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_favorite);

    ArrayList<String> favoriteList = (ArrayList<String>) getIntent().getStringArrayListExtra("FAVOURITE_LIST"); 

    //Your favorite list of title is here. Now call the adapter and attach with recyclerview to show this

    ...
}

推荐阅读