如何使用 Sqlite 数据库点击 Recyclerview 发送包裹
How to Send Parcel on click Recyler view with Sqlite Database
我已经使用 sqlite 输入了我的数据,但是当我想在 recyler 视图中使用我感到困惑的意图时我如何获取适配器位置以存储到捆绑包中并通过意图将其发送到其他 activity 并将其收集到其他 activity..
这是我的代码,
我的模型class有包裹
public class FamousPeople implements Parcelable {
private static final String FAMOUS_NAME = "famous name";
private static final String FAMOUS_PHOTO="photo";
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
private long id;
private String name;
private String photo;
private String details;
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}
public String getPhoto() {
return photo;
}
public void setPhoto(String photo) {
this.photo = photo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(this.id);
dest.writeString(this.name);
dest.writeString(this.photo);
dest.writeString(this.details);
}
public FamousPeople() {
}
protected FamousPeople(Parcel in) {
this.id = in.readLong();
this.name = in.readString();
this.photo = in.readString();
this.details = in.readString();
}
public static final Parcelable.Creator<FamousPeople> CREATOR = new Parcelable.Creator<FamousPeople>() {
@Override
public FamousPeople createFromParcel(Parcel source) {
return new FamousPeople(source);
}
@Override
public FamousPeople[] newArray(int size) {
return new FamousPeople[size];
}
};
}
我正在使用的片段 sqlite 数据库
public class BiographyFragment extends Fragment {
StaggeredGridLayoutManager staggeredGridLayoutManager;
List<FamousPeople> famousPeoples;
BiographyDataSource biographyDataSource;
public BiographyFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
biographyDataSource=new BiographyDataSource(getActivity());
biographyDataSource.open();
Log.v("data","database created");
View view=inflater.inflate(R.layout.fragment_biography, container, false);
RecyclerView recyclerView= (RecyclerView)view.findViewById(R.id.my_recycler_view);
recyclerView.setHasFixedSize(true);
staggeredGridLayoutManager=new
StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(staggeredGridLayoutManager);
List<FamousPeople> famousPeoples=biographyDataSource.findRecords();
List<FamousPeople> famousPeopleArrayList=biographyDataSource.findRecords();
if(famousPeoples.size()==0){
BioData bioData=new BioData();
bioData.createdata();
famousPeoples=biographyDataSource.findRecords();
}
RecyclerViewAdapter recyclerViewAdapter=
new RecyclerViewAdapter(getActivity(),famousPeoples);
recyclerView.setAdapter(recyclerViewAdapter);
return view;
}
}
** 我用来收集数据的数据列表 **
public class BioData
{
List<FamousPeople> famousPeoples;
BiographyDataSource biographyDataSource;
public List<FamousPeople> createdata(){
FamousPeople famousPeople=new FamousPeople();
famousPeople.setName("rahul");
famousPeople.setPhoto("amitabh");
famousPeople.setDetails("hello this is amitabh");
biographyDataSource.create(famousPeople);
Log.v("data", "inserted value 1");
famousPeople=new FamousPeople();
famousPeople.setName("cvraman");
famousPeople.setPhoto("cvraman");
famousPeople.setDetails("hello this is amitabh");
biographyDataSource.create(famousPeople);
Log.v("data", "inserted value 2");
famousPeople=new FamousPeople();
famousPeople.setName("indira");
famousPeople.setPhoto("indira");
famousPeople.setDetails("hello this is amitabh");
biographyDataSource.create(famousPeople);
Log.v("data", "inserted value 3");
famousPeople=new FamousPeople();
famousPeople.setName("modi");
famousPeople.setPhoto("modi");
famousPeople.setDetails("hello this is amitabh");
biographyDataSource.create(famousPeople);
Log.v("data", "inserted value 4");
return famousPeoples;
}
}
我的 recyler 视图我很困惑地使用包裹点击收集位置并将适当的数据发送给其他 Activity
class BiographyViewHolder extends RecyclerView.ViewHolder
implements View.OnClickListener {
public TextView textView;
public ImageView imageView;
BiographyDataSource biographyDataSource;
List<FamousPeople> famousPeoples;
public BiographyViewHolder(View itemView)
{
super(itemView);
itemView.setOnClickListener(this);
textView= (TextView) itemView.findViewById(R.id.country_name);
imageView= (ImageView) itemView.findViewById(R.id.country_photo);
}
@Override
public void onClick(View view) {
List<FamousPeople> famousPeopleArrayList=biographyDataSource.findRecords();
if(famousPeoples.size()==0){
BioData bioData=new BioData();
bioData.createdata();
famousPeoples=biographyDataSource.findRecords();
}
Bundle bundle=new Bundle();
// bundle.putParcelable("test",famousPeopleArrayList.get(getAdapterPosition()));
Intent intent=new Intent(view.getContext(),DetailActivity.class);
intent.putExtras(bundle);
view.getContext().startActivity(intent);
}
}
我通过制作内部 class 得到了答案 我在 java 文档
上阅读了主要内容
**java principal of inner class**
这是一种对只在一个地方使用的 class 进行逻辑分组的方法:如果一个 class 只对另一个 class 有用,那么合乎逻辑的是将它嵌入 class 并将两者放在一起。嵌套这样 "helper classes" 让他们的包更加精简。
它增加了封装:考虑两个顶级 classes,A 和 B,其中 B 需要访问 A 的成员,否则这些成员将被声明为私有。通过将 class B 隐藏在 class A 中,A 的成员可以声明为私有的,B 可以访问它们。另外,B本身可以对外界隐藏起来。
我制作了内部 class 内部传记片段,这是 recyler 视图,因为两者在逻辑上是相关的..
我已经使用 sqlite 输入了我的数据,但是当我想在 recyler 视图中使用我感到困惑的意图时我如何获取适配器位置以存储到捆绑包中并通过意图将其发送到其他 activity 并将其收集到其他 activity..
这是我的代码,
我的模型class有包裹
public class FamousPeople implements Parcelable {
private static final String FAMOUS_NAME = "famous name";
private static final String FAMOUS_PHOTO="photo";
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
private long id;
private String name;
private String photo;
private String details;
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}
public String getPhoto() {
return photo;
}
public void setPhoto(String photo) {
this.photo = photo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(this.id);
dest.writeString(this.name);
dest.writeString(this.photo);
dest.writeString(this.details);
}
public FamousPeople() {
}
protected FamousPeople(Parcel in) {
this.id = in.readLong();
this.name = in.readString();
this.photo = in.readString();
this.details = in.readString();
}
public static final Parcelable.Creator<FamousPeople> CREATOR = new Parcelable.Creator<FamousPeople>() {
@Override
public FamousPeople createFromParcel(Parcel source) {
return new FamousPeople(source);
}
@Override
public FamousPeople[] newArray(int size) {
return new FamousPeople[size];
}
};
}
我正在使用的片段 sqlite 数据库
public class BiographyFragment extends Fragment {
StaggeredGridLayoutManager staggeredGridLayoutManager;
List<FamousPeople> famousPeoples;
BiographyDataSource biographyDataSource;
public BiographyFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
biographyDataSource=new BiographyDataSource(getActivity());
biographyDataSource.open();
Log.v("data","database created");
View view=inflater.inflate(R.layout.fragment_biography, container, false);
RecyclerView recyclerView= (RecyclerView)view.findViewById(R.id.my_recycler_view);
recyclerView.setHasFixedSize(true);
staggeredGridLayoutManager=new
StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(staggeredGridLayoutManager);
List<FamousPeople> famousPeoples=biographyDataSource.findRecords();
List<FamousPeople> famousPeopleArrayList=biographyDataSource.findRecords();
if(famousPeoples.size()==0){
BioData bioData=new BioData();
bioData.createdata();
famousPeoples=biographyDataSource.findRecords();
}
RecyclerViewAdapter recyclerViewAdapter=
new RecyclerViewAdapter(getActivity(),famousPeoples);
recyclerView.setAdapter(recyclerViewAdapter);
return view;
}
}
** 我用来收集数据的数据列表 **
public class BioData
{
List<FamousPeople> famousPeoples;
BiographyDataSource biographyDataSource;
public List<FamousPeople> createdata(){
FamousPeople famousPeople=new FamousPeople();
famousPeople.setName("rahul");
famousPeople.setPhoto("amitabh");
famousPeople.setDetails("hello this is amitabh");
biographyDataSource.create(famousPeople);
Log.v("data", "inserted value 1");
famousPeople=new FamousPeople();
famousPeople.setName("cvraman");
famousPeople.setPhoto("cvraman");
famousPeople.setDetails("hello this is amitabh");
biographyDataSource.create(famousPeople);
Log.v("data", "inserted value 2");
famousPeople=new FamousPeople();
famousPeople.setName("indira");
famousPeople.setPhoto("indira");
famousPeople.setDetails("hello this is amitabh");
biographyDataSource.create(famousPeople);
Log.v("data", "inserted value 3");
famousPeople=new FamousPeople();
famousPeople.setName("modi");
famousPeople.setPhoto("modi");
famousPeople.setDetails("hello this is amitabh");
biographyDataSource.create(famousPeople);
Log.v("data", "inserted value 4");
return famousPeoples;
}
}
我的 recyler 视图我很困惑地使用包裹点击收集位置并将适当的数据发送给其他 Activity
class BiographyViewHolder extends RecyclerView.ViewHolder
implements View.OnClickListener {
public TextView textView;
public ImageView imageView;
BiographyDataSource biographyDataSource;
List<FamousPeople> famousPeoples;
public BiographyViewHolder(View itemView)
{
super(itemView);
itemView.setOnClickListener(this);
textView= (TextView) itemView.findViewById(R.id.country_name);
imageView= (ImageView) itemView.findViewById(R.id.country_photo);
}
@Override
public void onClick(View view) {
List<FamousPeople> famousPeopleArrayList=biographyDataSource.findRecords();
if(famousPeoples.size()==0){
BioData bioData=new BioData();
bioData.createdata();
famousPeoples=biographyDataSource.findRecords();
}
Bundle bundle=new Bundle();
// bundle.putParcelable("test",famousPeopleArrayList.get(getAdapterPosition()));
Intent intent=new Intent(view.getContext(),DetailActivity.class);
intent.putExtras(bundle);
view.getContext().startActivity(intent);
}
}
我通过制作内部 class 得到了答案 我在 java 文档
上阅读了主要内容**java principal of inner class**
这是一种对只在一个地方使用的 class 进行逻辑分组的方法:如果一个 class 只对另一个 class 有用,那么合乎逻辑的是将它嵌入 class 并将两者放在一起。嵌套这样 "helper classes" 让他们的包更加精简。
它增加了封装:考虑两个顶级 classes,A 和 B,其中 B 需要访问 A 的成员,否则这些成员将被声明为私有。通过将 class B 隐藏在 class A 中,A 的成员可以声明为私有的,B 可以访问它们。另外,B本身可以对外界隐藏起来。
我制作了内部 class 内部传记片段,这是 recyler 视图,因为两者在逻辑上是相关的..