android - 如何在 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 后,如何在单独的活动中显示收藏的内容。
请提供您宝贵的意见/建议
解决方案
首先,使您的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);
}
});
然后在您FavoritedActivity
的onCreate
尝试中从 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);
}
});
然后FavoritedActivity
在onCreate
@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
...
}
推荐阅读
- reporting-services - How to add Date and Time Parameter for two different days in SSRS
- javascript - 如何将所有 app.use 放在单独的公共文件中
- javascript - Changing an image size
- html - 不显示表单中输入的值
- php - 如何获取两个表中的更新最后一个值
- xslt-1.0 - XSLT_1: Add missing node based on child element value
- fortran - Compiling an old fortran code in gfortran of ubuntu 18.04
- r - 如何在 data.table 中获取 prop.table?
- javascript - 在 chart.js 的堆积条形图中显示百分比和总计
- java - 在 Java Servlet 中发送 JSON/GSON 请求会导致“错误请求”