[英]Saving details using Parse
I am unable to view saved data in the parse.com
dashboard.Secondly how to retrieve data and store in recyclerview using parse and adapters.Whats wrong with the code.Thanks in advance Mainactivity.java 我无法在
parse.com
仪表板中查看保存的数据。 parse.com
如何使用解析和适配器检索数据并将其存储在recyclerview中。代码有什么问题。提前感谢Mainactivity.java
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.parse.Parse;
import com.parse.ParseObject;
import parse.example.com.parseregistration.R;
public class MainActivity extends AppCompatActivity
{
EditText firstName,lastName,age,dob;
Button saveOne,saveTwo,showDetails;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
firstName=(EditText)findViewById(R.id.fn_Input);
lastName=(EditText)findViewById(R.id.ln_Input);
age=(EditText)findViewById(R.id.age_input);
dob=(EditText)findViewById(R.id.dob_Input);
saveOne=(Button)findViewById(R.id.saveBtn);
saveTwo=(Button)findViewById(R.id.saveBtn2);
showDetails=(Button)findViewById(R.id.sdBtn);
final ParseObject user=new ParseObject("userdata");
Parse.enableLocalDatastore(this);
Parse.initialize(this);
saveOne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
user.put("firstname",firstName.getText().toString());
user.put("lastname",lastName.getText().toString());
user.put("age",age.getText().toString());
user.put("dob",dob.getText().toString());
user.saveInBackground();
Toast.makeText(getApplicationContext(),"SAVED!",Toast.LENGTH_SHORT).show();
}
});
}
}
Userdata.java Userdata.java
public class UserData1
{
private String firstname;
private String lastname;
private int age;
private String dob;
public UserData1()
{
//Default Constrcuctor
}
public UserData1(String firstname,String lastname,String age,String dob)
{
firstname=firstname;
lastname=lastname;
age=age;
dob=dob;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getDob() {
return dob;
}
public void setDob(String dob) {
this.dob = dob;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String toSreing()
{
return firstname+"\t"+lastname+"\t"+age+"\t"+dob;
}
}
MyRecyclerView.java MyRecyclerView.java
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.msit.example.bunty.regform.R;
import com.msit.example.bunty.regform.entities.DataStore;
import com.parse.ParseObject;
import com.parse.ParseQuery;
public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.ViewHolder>
{
ParseQuery<ParseObject> parseQuery;
//ArrayList<UserData> userDataStore=new ArrayList<UserData>();
private MyRecyclerAdapter myRecyclerAdapter=this;
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view,parent,false);
ViewHolder viewHolder=new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position)
{
/*holder.fNameView.setText(userDataStore.getDataStore().get(position).getFirstName());
holder.lNameView.setText(userDataStore.getDataStore().get(position).getLastName());
holder.addressView.setText(userDataStore.getDataStore().get(position).getAddress());
holder.cityView.setText(userDataStore.getDataStore().get(position).getCity());
final String city=userDataStore.getDataStore().get(position).city;
*/
holder.cityView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(),city,Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
if(userDataStore==null)
{
return 0;
}
if(!userDataStore.getDataStore().isEmpty()&&userDataStore.getDataStore()!=null)
{
return userDataStore.getDataStore().size();
}
else
{
return 0;
}
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView fNameView;
TextView lNameView;
TextView addressView;
Button cityView;
CardView cardView;
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
fNameView = (TextView) itemView.findViewById(R.id.fn_view);
lNameView = (TextView) itemView.findViewById(R.id.ln_view);
addressView = (TextView) itemView.findViewById(R.id.addr_view);
cityView=(Button)itemView.findViewById(R.id.city_view);
cardView = (CardView) itemLayoutView.findViewById(R.id.card_list);
}
}
}`
好吧,对于初学者来说,不要使您的解析对象成为最终对象,这会使它成为不可变的,这也就意味着它也不能被修改或添加...此外,我认为将解析初始化内容放入应用程序类中是最佳做法,否则您每次都需要重新初始化活动开始
Here is your refactored code, I suggest you not to do Parse
queries within Adapter
. 这是您的重构代码,建议您不要在
Adapter
进行Parse
查询。 Better do that somewhere inside Activity
and after you retain data, pass these values to MyRecyclerAdapter
. 最好在
Activity
内的某个位置进行此操作,并保留数据后,将这些值传递给MyRecyclerAdapter
。
import android.content.Context;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.msit.example.bunty.regform.R;
import java.util.ArrayList;
public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.ViewHolder>
{
//ParseQuery<ParseObject> parseQuery;
private LayoutInflater inflater;
ArrayList<UserData> userDataStore = new ArrayList<UserData>();
private MyRecyclerAdapter myRecyclerAdapter=this;
public MyRecyclerAdapter(Context context, ArrayList<UserData> data) {
inflater = LayoutInflater.from(context);
userDataStore = data;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
View view = inflater.inflate(R.layout.listitem_category,parent,false);
ViewHolder viewHolder=new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position)
{
/*holder.fNameView.setText(userDataStore.getDataStore().get(position).getFirstName());
holder.lNameView.setText(userDataStore.getDataStore().get(position).getLastName());
holder.addressView.setText(userDataStore.getDataStore().get(position).getAddress());
holder.cityView.setText(userDataStore.getDataStore().get(position).getCity());
final String city=userDataStore.getDataStore().get(position).city;
*/
holder.cityView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(),city,Toast.LENGTH_SHORT).show();
}
});
}
@Override
public int getItemCount() {
if(userDataStore==null)
{
return 0;
}
if(userDataStore !=null && !userDataStore.isEmpty())
{
return userDataStore.size();
}
else
{
return 0;
}
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView fNameView;
TextView lNameView;
TextView addressView;
Button cityView;
CardView cardView;
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
fNameView = (TextView) itemView.findViewById(R.id.fn_view);
lNameView = (TextView) itemView.findViewById(R.id.ln_view);
addressView = (TextView) itemView.findViewById(R.id.addr_view);
cityView=(Button)itemView.findViewById(R.id.city_view);
cardView = (CardView) itemLayoutView.findViewById(R.id.card_list);
}
}
}
This is simple example how to retain data from Parse, put these code somewhere inside MainActivity
: 这是一个简单的示例,说明如何保留来自Parse的数据,并将这些代码放在
MainActivity
:
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("userdata");
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> list, ParseException e) {
if (e == null) {
ArrayList<UserData> userDataList = new ArrayList<UserData>();
UserData userData;
for (ParseObject object : list) {
userData = new UserData();
userData.setFirstName(object.get("firstname"));
userData.setLastName(object.get("lastname"));
//...
userDataList.add(userData);
}
MyRecyclerAdapter adapter = new MyRecyclerAdapter(MainActivity.this, userDataList);
// instance of RecyclerView declared somewhere in your Activity
recyclerView.setAdapter(adapter);
} else {
// Something went wrong, see exception
}
}
});
Btw. 顺便说一句。 here you can find well explained Android dev guide :D
在这里您可以找到详细解释的Android开发人员指南:D
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.