2016-01-19 28 views
0

我無法在parse.com dashboard.Secondly查看保存的數據如何提前 檢索使用解析和adapters.Whats錯誤的code.Thanks在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); 
     } 
    } 
}` 
+0

你會得到什麼錯誤?把'ParseObject user = new ParseObject(「userdata」);''在'Parse.initialize(this)之後'' – abeikverdi

+0

把一個'SaveCallback'接口作爲參數放到'saveInBackgroud'方法中。如果作爲返回值的'ParseException'爲'null',那麼您的數據應該顯示在儀表板中。 – flyingAssistant

+0

沒有錯誤..代碼運行正常 –

回答

0

對於初學者來說,不要讓你的解析對象是最終的,這使得它不可變,這意味着它不能被修改或添加太...另外,我認爲最好的做法是將解析初始化的東西放到應用程序類中,否則每次都會重新生成你的活動開始

+0

我刪除它..仍然沒有數據被保存在解析雲 –

+0

嘗試使用保存回調,新的SaveCallback()(我認爲),並檢查錯誤是否爲空。此對象的ACL級別又是什麼?你的用戶是否足夠了? –

0

這裏是你重構的代碼,我建議你不要在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); 
     } 
    } 
} 

這是簡單的例子,如何從解析保留數據,地方把這些代碼中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 
       } 
      } 
     }); 

here你可以找到很好解釋Android開發指南:D