【发布时间】:2015-10-31 15:22:15
【问题描述】:
我正在使用 android studio 构建一个应用程序,它是一个带有片段的导航抽屉应用程序。我成功地将我的应用程序连接到 Parse.com,它接收到的通知非常好。但是,我无法成功实现以下功能:
我有一个 Parse.com 对象,其中包含一个“名称”列。我可以从 Parse.com 加载该列中的数据,但我无法将该数据放入列表视图中。
这是我从 Parse.com 获取数据的 Alerts.java 页面:
package com.rayyan_nasr.apple.besgb.activity;
import com.parse.ParseClassName;
import com.parse.ParseObject;
import com.parse.ParseQuery;
/**
* Created by Apple on 10/25/15.
*/
@ParseClassName("Recipe")
public class Alerts extends ParseObject {
public Alerts(){
}
public String getTitle() {
return getString("name");
}
public void setTitle(String title) {
put("name", title);
}
}
这是我的应用程序类,它注册了我的 Alerts.java 类 (MyApplication.java):
package com.rayyan_nasr.apple.besgb.activity;
import android.app.Application;
import android.content.res.Configuration;
import com.parse.Parse;
import com.parse.ParseClassName;
import com.parse.ParseInstallation;
import com.parse.ParseObject;
/**
* Created by Apple on 10/13/15.
*/
public class MyApplication extends Application {
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
@Override
public void onCreate() {
super.onCreate();
ParseObject.registerSubclass(Alerts.class);
Parse.initialize(this, "xxxxxx", "ccccc");
ParseInstallation.getCurrentInstallation().saveInBackground();
}
@Override
public void onLowMemory() {
super.onLowMemory();
}
@Override
public void onTerminate() {
super.onTerminate();
}
}
这是我希望用我的 Parse.com 数据 Parse.java 填充的片段(我已经注释掉了给我一个错误的行):
package com.rayyan_nasr.apple.besgb.activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import com.parse.FindCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import com.rayyan_nasr.apple.besgb.R;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Apple on 10/27/15.
*/
public class Parse extends Fragment {
public ArrayList<String> foos = new ArrayList<String>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_alerts, container, false);
Toast.makeText(getActivity(), "Loading...", Toast.LENGTH_LONG).show();
ParseQuery<Alerts> query = ParseQuery.getQuery(Alerts.class);
query.findInBackground(new FindCallback<Alerts>() {
@Override
public void done(List<Alerts> results, ParseException e) {
if (e == null) {
for (int i = 0; i < results.size(); i++) {
String c = results.get(i).getString("name");
foos.add(c);
}
} else {
Toast.makeText(getActivity(), "Error",
Toast.LENGTH_LONG).show();
}
}
});
ListView lv = (ListView) view.findViewById(R.id.listView); //I'm getting an error in the below code from (this.. foos);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, foos);
lv.setAdapter(arrayAdapter);
return view;
}
}
最后是我的布局文件,fragment_alerts.XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listView"
android:layout_gravity="center_horizontal" />
</LinearLayout>
我已经尝试过 Parse 的 MealSpotting 教程,但似乎没有什么对我有用,我迫切需要一个解决方案,如果有人确实有答案,也许显示一些代码或至少指向一些可以帮助。提前谢谢..
干杯。
【问题讨论】:
标签: android android-fragments parse-platform android-listfragment