[英]Passing data from listView to another Activity EditText
我在 listView 中显示数据,并且在 listView 上长按我想更新其数据并将其数据传递给另一个更新活动编辑文本。
我的显示代码:
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();
}
});
}
}
我想在另一个活动中的每个 EditText 中接收姓名、年龄、电话、身高数据。
我的接收数据代码:
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);
}
}
我在 EditTxtName 中收到所有数据,但我想在其 Edittexts 中设置该数据。
请建议我怎么做..提前谢谢。
您应该使用实现Serializable
或Parcelable
您的member class
:
像这样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;
}
}
然后你可以像这样传递这个 object:
Member member=adapter.getItem(position);
Intent intent = new Intent(this, Update.class);
intent.putExtra("tem", member);
startActivity(intent);
你可以得到这样的数据:
Member member= (Member) getIntent().getSerializableExtra("tem");
然后你可以在它的 EditText 中设置每个数据,如下所示:
EditTxtName.setName(member.name);
第二种方式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();
}
}
然后像这样传递您的数据:
Member member=adapter.getItem(position);
Intent intent = new Intent(this,Update.class);
intent.putExtra("tem", member);
startActivity(i);
得到它是这样的:
Bundle bundle = getIntent().getExtras();
Member member = bundle.getParcelable("tem");
然后将其设置为editText,如下所示:
EditTxtName.setName(member.name);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.