简体   繁体   中英

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.

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.

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);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM