Android 使用共享首选项在recyclerView中实现Like按钮
我有一个Android 使用共享首选项在recyclerView中实现Like按钮,android,android-fragments,android-recyclerview,android-cardview,Android,Android Fragments,Android Recyclerview,Android Cardview,我有一个cardView,它有一个textView和一个类似的按钮。无论何时按下like按钮,它都会在另一个片段中显示cardView,就像收藏夹一样 如何使用共享首选项或任何其他方法来实现这一点?我这样做是为了更改like按钮的颜色,但不知道如何将该cardView添加到另一个片段: likeImageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View
cardView
,它有一个textView
和一个类似的按钮。无论何时按下like按钮,它都会在另一个片段中显示cardView
,就像收藏夹一样
如何使用共享首选项或任何其他方法来实现这一点?我这样做是为了更改like按钮的颜色,但不知道如何将该cardView
添加到另一个片段:
likeImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int id = (int)likeImageView.getTag();
if( id == R.drawable.ic_like){
likeImageView.setTag(R.drawable.ic_liked);
likeImageView.setImageResource(R.drawable.ic_liked);
Toast.makeText(getActivity(),titleTextView.getText()+" added to favourites",Toast.LENGTH_SHORT).show();
} else {
likeImageView.setTag(R.drawable.ic_like);
likeImageView.setImageResource(R.drawable.ic_like);
Toast.makeText(getActivity(),titleTextView.getText()+" removed from favourites",Toast.LENGTH_SHORT).show();
}
}
});
- 共享首选项:以键值对存储私有基元数据
- 内部存储:在设备内存中存储私有数据
- 存储:将公共数据存储在共享的外部存储器上
- SQLite数据库:将结构化数据存储在私有数据库中
- 网络连接:使用自己的网络服务器在web上存储数据
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_like,
container, false);
//accessing database
MySQLiteOpenHelper db = new MySQLiteOpenHelper(getActivity());
//get all likes from database.
//getAllLikes is a method that returns the likes you have stored in the database, as list.
//You must write methods to write likes into the database and read from the database.
List<MyLikeObject> likeList = new ArrayList<MyLikeObject>();
likeList = db.getAllLikes();
//find RecyclerView
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.rvLike);
//set layoutManger
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
//create an adapter
MyAdapter mAdapter = new MyAdapter(likeList);
//set adapter
recyclerView.setAdapter(mAdapter);
return view;
}
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment_like,
货柜(虚假);;
//访问数据库
MySQLiteOpenHelper db=新的MySQLiteOpenHelper(getActivity());
//从数据库中获取所有喜欢的内容。
//getAllLikes是一个方法,它以列表的形式返回存储在数据库中的likes。
//您必须编写方法,将like写入数据库并从数据库中读取。
List likeList=new ArrayList();
likeList=db.getAllLikes();
//查找回收视图
RecyclerView RecyclerView=(RecyclerView)view.findViewById(R.id.rvLike);
//设置布局管理器
setLayoutManager(新的LinearLayoutManager(getActivity());
//创建一个适配器
MyAdapter mAdapter=新的MyAdapter(likeList);
//设置适配器
recyclerView.setAdapter(mAdapter);
返回视图;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_like,
container, false);
//accessing database
MySQLiteOpenHelper db = new MySQLiteOpenHelper(getActivity());
//get all likes from database.
//getAllLikes is a method that returns the likes you have stored in the database, as list.
//You must write methods to write likes into the database and read from the database.
List<MyLikeObject> likeList = new ArrayList<MyLikeObject>();
likeList = db.getAllLikes();
//find RecyclerView
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.rvLike);
//set layoutManger
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
//create an adapter
MyAdapter mAdapter = new MyAdapter(likeList);
//set adapter
recyclerView.setAdapter(mAdapter);
return view;
}
Like_btn.setOnClickListener(new OnClickListener()
{
**private boolean fun = true;**
public void onClick(View v)
{
if(fun)
{
Like_btn.setImageResource(R.drawable.unlike);
fun=false;
}
else
{
fun=true;
Like_btn.setImageResource(R.drawable.like);
Toast.makeText(getApplicationContext(), "Changed", Toast.LENGTH_LONG).show();
}
}
});