[英]Passing data from listView to another Activity EditText
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.我在 listView 中显示数据,并且在 listView 上长按我想更新其数据并将其数据传递给另一个更新活动编辑文本。
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.我想在另一个活动中的每个 EditText 中接收姓名、年龄、电话、身高数据。
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.我在 EditTxtName 中收到所有数据,但我想在其 Edittexts 中设置该数据。
Please suggest me how to do so.. Thanks in advance.请建议我怎么做..提前谢谢。
You should use implement Serializable
or Parcelable
your member class
:您应该使用实现Serializable
或Parcelable
您的member class
:
First way Serializable
like this:像这样Serializable
的第一种方式:
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:然后你可以像这样传递这个 object:
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:然后你可以在它的 EditText 中设置每个数据,如下所示:
EditTxtName.setName(member.name);
Second way Parcelable
like this:第二种方式Parcelable
像这样:
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:然后将其设置为editText,如下所示:
EditTxtName.setName(member.name);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.