[英]Saving details using Parse
我無法在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
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
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);
}
}
}`
好吧,對於初學者來說,不要使您的解析對象成為最終對象,這會使它成為不可變的,這也就意味着它也不能被修改或添加...此外,我認為將解析初始化內容放入應用程序類中是最佳做法,否則您每次都需要重新初始化活動開始
這是您的重構代碼,建議您不要在Adapter
進行Parse
查詢。 最好在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);
}
}
}
這是一個簡單的示例,說明如何保留來自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
}
}
});
順便說一句。 在這里您可以找到詳細解釋的Android開發人員指南:D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.