Android 从RealmDatabase检索数据并将其设置为GridView
我能够将JSON数据保存到领域数据库中。我已将其用作域的文档,但无法将数据设置为GridView。我使用的是自定义适配器,而不是领域适配器。数据会被记录,但不会显示在GridView中。如何检索数据并将其显示到GridView PopularDestinationGridDetail这是解析JSON数据并将其保存到数据库的地方Android 从RealmDatabase检索数据并将其设置为GridView,android,json,gridview,realm,Android,Json,Gridview,Realm,我能够将JSON数据保存到领域数据库中。我已将其用作域的文档,但无法将数据设置为GridView。我使用的是自定义适配器,而不是领域适配器。数据会被记录,但不会显示在GridView中。如何检索数据并将其显示到GridView PopularDestinationGridDetail这是解析JSON数据并将其保存到数据库的地方 Realm.init(this); realm = Realm.getDefaultInstance(); LinearAddTOFavourite
Realm.init(this);
realm = Realm.getDefaultInstance();
LinearAddTOFavourite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
savetoDatabase();
}
});
public void savetoDatabase() {
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm bgRealm) {
RealmDatabasePopularDestination realmDatabasePopularDestination = bgRealm.createObject(RealmDatabasePopularDestination.class);
realmDatabasePopularDestination.setTitle(title);
realmDatabasePopularDestination.setTitle(latitude);
realmDatabasePopularDestination.setTitle(longitude);
realmDatabasePopularDestination.setImage(image);
// Toast.makeText(this, realmDatabasePopularDestination.setLatitude(realmDatabasePopularDestination1.getLatitude()))
}
}, new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess() {
Log.v("Success",title);
}
}, new Realm.Transaction.OnError() {
@Override
public void onError(Throwable error) {
Log.e("failed", error.getMessage());
}
});
}
最喜欢的
public class Favourites extends Fragment {
Realm realm;
GridView gridViewBookmark;
ArrayList<RealmDatabasePopularDestination> destination_bookmark_realm = new ArrayList<>();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
Realm.init(getContext());
realm = Realm.getDefaultInstance();
RealmDatabasePopularDestination realmDatabasePopularDestination = new RealmDatabasePopularDestination();
View view = inflater.inflate(R.layout.bookmark_layout_gridview, container, false);
gridViewBookmark = (GridView) view.findViewById(R.id.gridviewBookmark);
destination_bookmark_realm.add(realmDatabasePopularDestination);
getData();
return view;
}
public void getData() {
FavouriteAdapter favouriteAdapter = new FavouriteAdapter(getContext(), destination_bookmark_realm);
gridViewBookmark.setAdapter(favouriteAdapter);
RealmResults<RealmDatabasePopularDestination> result = realm.where(RealmDatabasePopularDestination.class).equalTo("Title","niyash temple").findAll();
result.load();
System.out.println("Result is" + result);
// String output = "";
// for (RealmDatabasePopularDestination realmDatabasePopularDestination : result) {
//
//
// output += realmDatabasePopularDestination.toString();
//
// }
//
// System.out.println("output" + output);
// System.out.println("Total size=" + result.size());
}
}
收藏夹适配器
public class RealmDatabasePopularDestination extends RealmObject {
String Title;
String Latitude;
String Longitude;
String image;
public String getTitle() {
return Title;
}
public void setTitle(String title) {
Title = title;
}
public String getLatitude() {
return Latitude;
}
public void setLatitude(String latitude) {
Latitude = latitude;
}
public String getLongitude() {
return Longitude;
}
public void setLongitude(String longitude) {
Longitude = longitude;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
}
public class FavouriteAdapter extends BaseAdapter {
Context mContext;
ArrayList<RealmDatabasePopularDestination> clas_realm_bookmark = null;
String TAG = "HomeTab_adapter";
public FavouriteAdapter(Context mContext, ArrayList<RealmDatabasePopularDestination> clas_realm_bookmark) {
super();
this.mContext = mContext;
this.clas_realm_bookmark = clas_realm_bookmark;
}
@Override
public int getCount() {
return clas_realm_bookmark.size();
}
@Override
public Object getItem(int position) {
return clas_realm_bookmark.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final FavouriteAdapter.Holder viewHolder;
if (convertView == null) {
// inflate the layout
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// LayoutInflater inflater = LayoutInflater.from(parent.getContext());
convertView = inflater.inflate(R.layout.bookmark_grid_list_item, parent, false);
// well set up the ViewHolder
// viewHolder = new ClassScheduleStudentAdapter.Holder();
viewHolder = new FavouriteAdapter.Holder();
// viewHolder.popular_destintion_id = (TextView) convertView.findViewById(R.id.student_profile_subject);
viewHolder.title = (TextView) convertView.findViewById(R.id.festivalName);
viewHolder.imageLogo = (ImageView) convertView.findViewById(R.id.event_festival_main_image);
// Log.d(TAG, "@@ postion:" + position + " getTeacherName" + class_destination.get(position).getId());
convertView.setTag(viewHolder);
} else {
// we've just avoided calling findViewById() on resource everytime
// just use the viewHolder
// viewHolder = (ClassScheduleStudentAdapter.Holder) convertView.getTag();
viewHolder = (Holder) convertView.getTag();
}
viewHolder.title.setText(clas_realm_bookmark.get(position).getTitle());
Picasso.with(mContext).load(clas_realm_bookmark.get(position).getImage()).error(R.drawable.close).into(viewHolder.imageLogo);
return convertView;
}
class Holder {
TextView title;
ImageView imageLogo;
}
}
公共类FavoriteAdapter扩展了BaseAdapter{
语境;
ArrayList clas\u realm\u bookmark=null;
String TAG=“HomeTab\u适配器”;
公共收藏夹适配器(上下文mContext、ArrayList clas\u realm\u书签){
超级();
this.mContext=mContext;
this.clas\u realm\u bookmark=clas\u realm\u bookmark;
}
@凌驾
public int getCount(){
返回clas_realm_bookmark.size();
}
@凌驾
公共对象getItem(int位置){
返回clas\u realm\u bookmark.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
最终收藏夹适配器。持有者视图持有者;
if(convertView==null){
//使布局膨胀
LayoutInflater充气器=(LayoutInflater)mContext.getSystemService(Context.LAYOUT\u充气器\u服务);
//LayoutInflater充气器=LayoutInflater.from(parent.getContext());
convertView=充气机。充气(R.layout.bookmark\u grid\u list\u项,父项,false);
//很好地设置了取景器
//viewHolder=新类ScheduleStudenAdapter.Holder();
viewHolder=新的FavoriteAdapter.Holder();
//viewHolder.popular\u destinion\u id=(TextView)convertView.findViewById(R.id.student\u profile\u subject);
viewHolder.title=(TextView)convertView.findViewById(R.id.festivalName);
viewHolder.imageLogo=(ImageView)convertView.findViewById(R.id.event\u festival\u main\u image);
//Log.d(标记“”@@position:“+position+”getTeacherName“+class_destination.get(position).getId());
convertView.setTag(viewHolder);
}否则{
//我们只是避免了每次在资源上调用findViewById()
//只需使用viewHolder
//viewHolder=(ClassScheduleStudentAdapter.Holder)convertView.getTag();
viewHolder=(Holder)convertView.getTag();
}
viewHolder.title.setText(clas\u realm\u bookmark.get(position.getTitle());
Picasso.with(mContext).load(clas\u realm\u bookmark.get(position.getImage()).error(R.drawable.close).into(viewHolder.imageLogo);
返回视图;
}
阶级持有者{
文本视图标题;
图像视图图像标识;
}
}
我没有收到任何错误,但它们没有在ListView上设置。这是第一次使用realm,所以不要知道我做错了什么。在从数据库提取数据之前,您正在将适配器设置为列表视图
RealmResults<RealmDatabasePopularDestination> result = realm.where(RealmDatabasePopularDestination.class).equalTo("Title","niyash temple").findAll();
result.load();
FavouriteAdapter favouriteAdapter = new FavouriteAdapter(getContext(), destination_bookmark_realm);
gridViewBookmark.setAdapter(favouriteAdapter);
RealmResults result=realm.where(RealmDatabasePopularDestination.class).equalTo(“Title”,“niyash temple”).findAll();
result.load();
FavoriteAdapter FavoriteAdapter=新的FavoriteAdapter(getContext(),目标\书签\领域);
setAdapter(FavoriteAdapter);
使用上述代码和
目的地\u书签\u域应该加载您从数据库获得的结果,而不是
public class FavouriteAdapter extends BaseAdapter {
Context mContext;
ArrayList<RealmDatabasePopularDestination> clas_realm_bookmark = null;
公共类FavoriteAdapter扩展了BaseAdapter{
语境;
ArrayList clas\u realm\u bookmark=null;
您应该使用中指定的
RealmBaseAdapter
from.获取类似于I/System.out的输出:结果是[RealmDatabasePopularDestination=proxy[{Title:85.3404},{Latitude:null},{Longitude:null},{image:}]08-14 16:05:48.704 16347-16347/org.unicity.mobile.patanheritage W/Settings:设置飞行模式已从android.provider.Settings.System移动到android.provider.Settings.Global,返回只读值。RealmBaseAdapter是强制的还是我们可以使用任何自定义适配器???只要使用Real,您就可以使用任何适配器mResults
而不是ArrayList
,并且您还可以正确管理RealmChangeListener
调用正确的适配器。当数据集更改时通知*
方法。如果您不想手动管理RealmChangeListener
,请使用RealmBaseAdapter
。谢谢,这对我也有帮助,我已经解决了无论如何都要使用自定义适配器。现在我想知道如果您从域中删除一个对象,然后单击该行会发生什么情况…我现在还没有检查。会发生什么,建议。您以前有没有遇到过这种问题。如果我用域提供的适配器替换自定义适配器,并使用相同的代码,会不会出现问题?