2016-02-20 2 views
0

Я использую parse.com для хранения моих данных, и я хочу получить определенный объект, и я не получаю никаких ошибок или исключений, просто пустую активность, я пробовал к extendsListActivity с setListAdapter() вместо AppCompatActivity, Activity, но я получаю разные ошибкине удалось получить данные и отобразить с сервера анализа

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 (сеттера и добытчики)

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. Затем Parse sdk предоставляет два метода для каждого запроса. Один из них - асинк, а другой - синк. Таким образом, вы не должны использовать AsynkTask. Я ставлю ниже примера взял из ссылки апи:

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 предлагает вам простой адаптер (да, вы можете продлить его) для отображения данных в listview. Имейте в виду, что Parse будет закрываться в ближайшие годы.

+0

Я попробовал более простой код в ссылках сайта, и он работал, о разборе сеансов из-за служб. У меня нет проблем с этим, так как я работаю над своим проектом в колледже. благодаря –

Смежные вопросы