Reputation: 45
I am displaying data in listView and on long Press on listView i want to update its data and pass its data to another Update activity Edit texts.
my code for displaying:
public class Retreivedata extends AppCompatActivity {
ListView listView;
FirebaseDatabase database;
DatabaseReference ref;
ArrayList<String> list;
ArrayAdapter<String> adapter;
Member member;
Button btnDlt;
Boolean a=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_retreivedata);
member = new Member();
listView =(ListView)findViewById(R.id.listView);
btnDlt = (Button) findViewById(R.id.btnDlt);
database = FirebaseDatabase.getInstance();
ref = database.getReference("Member");
list = new ArrayList<>();
adapter = new ArrayAdapter<String>(this,R.layout.list_white_text,R.id.userInfo, list);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot dts: dataSnapshot.getChildren())
{
member = dts.getValue(Member.class);
list.add("Name :"+member.getName().toString()+" Age
:"+member.getAge().toString()+" Phone :"+member.getPhone().toString()+"\n"+"-------------
-----------");
}
listView.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
btnDlt.setEnabled(false);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Boolean a=true;
String item = adapter.getItem(position);
Toast.makeText(Retreivedata.this,"Do u want to delete this
record!!",Toast.LENGTH_LONG).show();
if (a==true)
{
btnDlt.setEnabled(true);
}else{
btnDlt.setEnabled(false);
}
}
});
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
String item = adapter.getItem(position).toString();
Intent intent = new Intent(Retreivedata.this, Update.class);
intent.putExtra("tem",item);
startActivity(intent);
return false;
}
});
btnDlt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ref.child(member.getMemberId()).removeValue();
Toast.makeText(Retreivedata.this, "Record deleted Successfully", Toast.LENGTH_LONG).show();
adapter.remove(val);
adapter.clear();
}
});
}
}
I want to recive Name,age,phone,height data in every EditText in another activity .
My code for Receiving data:
public class Update extends AppCompatActivity {
EditText EditTxtName,EditTxtAge,txtPhone,txtHeight;
Button btnUpdate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update);
EditTxtName = (EditText)findViewById(R.id.EditTxtName);
EditTxtAge = (EditText)findViewById(R.id.EditTxtAge);
txtPhone = (EditText)findViewById(R.id.txtPhone);
txtHeight = (EditText)findViewById(R.id.txtHeight);
btnUpdate = (Button)findViewById(R.id.btnUpdate);
String TempHolder = getIntent().getStringExtra("tem");
EditTxtName.setText(TempHolder);
}
}
I receive all data in EditTxtName but i want to set that data in its Edittexts.
Please suggest me how to do so.. Thanks in advance.
Upvotes: 1
Views: 57
Reputation: 1660
You should use implement Serializable
or Parcelable
your member class
:
First way Serializable
like this :
public class Member implements Serializable{
private int id;
private String name;
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Then you can pass this object like this :
Member member=adapter.getItem(position);
Intent intent = new Intent(this, Update.class);
intent.putExtra("tem", member);
startActivity(intent);
And you can get data like this :
Member member= (Member) getIntent().getSerializableExtra("tem");
THen you can set per data in its EditText like this :
EditTxtName.setName(member.name);
Second way Parcelable
like this :
public class ObjectA implements Parcelable
{
private String name = null;
private int id = 0;
public ObjectA()
{
}
@Override
public int describeContents()
{
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags)
{
dest.writeString(this.name);
dest.writeInt(this.id);
}
public void readFromParcel(Parcel in)
{
this.name = in.readString();
this.id = in.readInt();
}
}
Then pass your data like this :
Member member=adapter.getItem(position);
Intent intent = new Intent(this,Update.class);
intent.putExtra("tem", member);
startActivity(i);
And get it like this :
Bundle bundle = getIntent().getExtras();
Member member = bundle.getParcelable("tem");
Then set it to editText like this :
EditTxtName.setName(member.name);
Upvotes: 1