2016-02-20 82 views
0

我正在使用parse.com来存储我的数据,并且我想要回顾某个对象,并且我没有收到任何错误或异常,只是一个空的活动,我试过了到extendsListActivitysetListAdapter()代替AppCompatActivityActivity但我得到不同的错误无法从解析服务器获取数据和显示器

ProblemList.java

public class ProblemList extends AppCompatActivity { 
ListView listview; 
List<ParseObject> ob; 
ProgressDialog mProgressDialog; 
ListViewAdapter adapter; 
private List<Problems> problemsList = null; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_problem_list); 
    new DataFetch().execute(); 
} 
private class DataFetch extends AsyncTask<Void, Void, Void> { 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     mProgressDialog = new ProgressDialog(ProblemList.this); 
     mProgressDialog.setTitle("Getting data from Parse.com servers"); 
     mProgressDialog.setMessage("Loading..."); 
     mProgressDialog.setIndeterminate(false); 
     mProgressDialog.show(); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     problemsList=new ArrayList<>(); 
     try { 
      ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Problem"); 
      ob=query.find(); 
      for (ParseObject problem : ob) 
      { 
       Problems p=new Problems(); 
       p.setReportDate(problem.getCreatedAt().toString()); 
       p.setReportUser((String) problem.get("Username")); 
       p.setReportInfo((String) problem.get("problem")); 
       problemsList.add(p); 
      } 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void aVoid) { 
     listview = (ListView) findViewById(R.id.listview); 
     adapter = new ListViewAdapter(ProblemList.this, problemsList); 
      listview.setAdapter(adapter); 
     mProgressDialog.dismiss(); 
    } 
} 
} 

listviewAdapter.java

public class ListViewAdapter extends BaseAdapter { 
Context context; 
LayoutInflater inflater; 
private List<Problems> problemlist = null; 
private ArrayList<Problems> arraylist; 
public ListViewAdapter(Context context,List<Problems> problemlist) { 
    this.context=context; 
    this.problemlist=problemlist; 
    inflater=LayoutInflater.from(context); 
    this.arraylist=new ArrayList<Problems>(); 
    this.arraylist.addAll(problemlist); 
} 
@Override 
public int getCount() { 
    return problemlist.size(); 
} 
@Override 
public Object getItem(int position) { 
    return problemlist.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 
@Override 
public View getView(int position, View view, ViewGroup parent) { 
    final ViewHolder holder; 
    if (view==null){ 
     holder=new ViewHolder(); 
     view = inflater.inflate(R.layout.rows, parent); 
     holder.mDate= (TextView) view.findViewById(R.id.reportDate); 
     holder.mProblem= (TextView) view.findViewById(R.id.reportMsg); 
     holder.mUsername=(TextView) view.findViewById(R.id.reportedUser); 
     view.setTag(holder); 
    } 
    else { 
     holder= (ViewHolder) view.getTag(); 
    } 
    holder.mDate.setText(problemlist.get(position).getReportDate()); 
    holder.mProblem.setText(problemlist.get(position).getReportInfo()); 
    holder.mUsername.setText(problemlist.get(position).getReportUser()); 
    return view; 
} 
public class ViewHolder{ 
    TextView mDate; 
    TextView mUsername; 
    TextView mProblem; 
} 
} 

Problem.java(getter和setter方法)

public class Problems { 
String reportUser; 
String reportDate; 
String reportInfo; 
public String getReportUser() { 
    return reportUser; 
} 
public void setReportUser(String reportUser) { 
    this.reportUser = reportUser; 
} 

public String getReportDate() { 
    return reportDate; 
} 
public void setReportDate(String reportDate) { 
    this.reportDate = reportDate; 
} 

public String getReportInfo() { 
    return reportInfo; 
} 

public void setReportInfo(String reportInfo) { 
    this.reportInfo = reportInfo; 
} 
} 

XML文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 
<ListView 
    android:id="@+id/listview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 

我跟着这个教程here,感谢您的时间。

回答

1

首先我建议使用扩展ParseObject的自定义。所以ypur问题应该扩展ParseObject。 然后解析sdk为每个请求提供两种方法。一个是asynk,另一个是synk。所以,你不应该使用AsynkTask。下面我举一个例子,从api参考:

ParseQuery<ParseObject> query = ParseQuery.getQuery("GameScore"); 
query.whereEqualTo("playerName", "Dan Stemkoski"); 
query.findInBackground(new FindCallback<ParseObject>() { 
    public void done(List<ParseObject> scoreList, ParseException e) { 
     if (e == null) { 
      Log.d("score", "Retrieved " + scoreList.size() + " scores"); 
     } else { 
      Log.d("score", "Error: " + e.getMessage()); 
     } 
    } 
}); 

完成的方法是一个回调,所有这些代码是在单独的线程上运行。

解析提供给你简单的适配器(是的,你可以扩展它)在列表视图上显示数据。请记住,Parse将在明年关闭。

+0

我尝试了更多简单的代码在网站的参考和它的工作,关于解析服务我没有问题,因为我正在我的大学项目工作。谢谢 –

相关问题