安卓收获地址管理代码
时间: 2023-08-06 17:24:31 浏览: 34
以下是一个简单的安卓收货地址管理的代码示例:
1. Address类,用于存储地址信息
```java
public class Address {
private int id;
private String name;
private String phone;
private String address;
private String zipCode;
private boolean isDefault;
// 构造函数和Getter/Setter方法省略
}
```
2. AddressAdapter类,用于展示地址列表
```java
public class AddressAdapter extends RecyclerView.Adapter<AddressAdapter.ViewHolder> {
private List<Address> mAddresses;
private OnItemClickListener mOnItemClickListener;
public AddressAdapter(List<Address> addresses) {
mAddresses = addresses;
}
public void setOnItemClickListener(OnItemClickListener listener) {
mOnItemClickListener = listener;
}
public interface OnItemClickListener {
void onItemClick(View view, int position);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_address, parent, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
Address address = mAddresses.get(position);
holder.name.setText(address.getName());
holder.phone.setText(address.getPhone());
holder.address.setText(address.getAddress());
holder.zipCode.setText(address.getZipCode());
holder.defaultAddress.setChecked(address.isDefault());
holder.defaultAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int pos = holder.getAdapterPosition();
Address address = mAddresses.get(pos);
address.setDefault(holder.defaultAddress.isChecked());
notifyDataSetChanged();
}
});
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int pos = holder.getAdapterPosition();
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(holder.itemView, pos);
}
}
});
}
@Override
public int getItemCount() {
return mAddresses.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
TextView name;
TextView phone;
TextView address;
TextView zipCode;
CheckBox defaultAddress;
public ViewHolder(View view) {
super(view);
name = view.findViewById(R.id.tv_name);
phone = view.findViewById(R.id.tv_phone);
address = view.findViewById(R.id.tv_address);
zipCode = view.findViewById(R.id.tv_zip_code);
defaultAddress = view.findViewById(R.id.cb_default_address);
}
}
}
```
3. AddressManager类,用于管理地址信息
```java
public class AddressManager {
private static AddressManager sInstance;
private List<Address> mAddresses;
private SharedPreferences mSharedPreferences;
private AddressManager(Context context) {
mSharedPreferences = context.getSharedPreferences("address", Context.MODE_PRIVATE);
String addressesStr = mSharedPreferences.getString("addresses", "");
if (!TextUtils.isEmpty(addressesStr)) {
mAddresses = new Gson().fromJson(addressesStr, new TypeToken<List<Address>>(){}.getType());
}
if (mAddresses == null) {
mAddresses = new ArrayList<>();
}
}
public static AddressManager getInstance(Context context) {
if (sInstance == null) {
sInstance = new AddressManager(context);
}
return sInstance;
}
public List<Address> getAddresses() {
return mAddresses;
}
public void addAddress(Address address) {
mAddresses.add(address);
saveAddresses();
}
public void deleteAddress(Address address) {
mAddresses.remove(address);
saveAddresses();
}
public void updateAddress(Address address) {
for (Address addr : mAddresses) {
if (addr.getId() == address.getId()) {
addr.setName(address.getName());
addr.setPhone(address.getPhone());
addr.setAddress(address.getAddress());
addr.setZipCode(address.getZipCode());
addr.setDefault(address.isDefault());
break;
}
}
saveAddresses();
}
public void setDefaultAddress(Address address) {
for (Address addr : mAddresses) {
if (addr.getId() == address.getId()) {
addr.setDefault(true);
} else {
addr.setDefault(false);
}
}
saveAddresses();
}
private void saveAddresses() {
String addressesStr = new Gson().toJson(mAddresses);
mSharedPreferences.edit().putString("addresses", addressesStr).apply();
}
}
```
4. AddressActivity类,用于展示地址列表和编辑地址信息
```java
public class AddressActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private AddressAdapter mAdapter;
private List<Address> mAddresses;
private int mSelectedPosition = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_address);
mAddresses = AddressManager.getInstance(this).getAddresses();
mRecyclerView = findViewById(R.id.recycler_view);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(layoutManager);
mAdapter = new AddressAdapter(mAddresses);
mAdapter.setOnItemClickListener(new AddressAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
mSelectedPosition = position;
Address address = mAddresses.get(position);
Intent intent = new Intent(AddressActivity.this, EditAddressActivity.class);
intent.putExtra("address", address);
startActivityForResult(intent, 1);
}
});
mRecyclerView.setAdapter(mAdapter);
Button addButton = findViewById(R.id.btn_add);
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(AddressActivity.this, EditAddressActivity.class);
startActivityForResult(intent, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Address address = (Address) data.getSerializableExtra("address");
if (requestCode == 1) {
AddressManager.getInstance(this).addAddress(address);
} else if (requestCode == 2) {
AddressManager.getInstance(this).updateAddress(address);
}
mAdapter.notifyDataSetChanged();
}
}
}
```
5. EditAddressActivity类,用于编辑地址信息
```java
public class EditAddressActivity extends AppCompatActivity {
private EditText mNameEditText;
private EditText mPhoneEditText;
private EditText mAddressEditText;
private EditText mZipCodeEditText;
private CheckBox mDefaultCheckBox;
private Address mAddress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_address);
mNameEditText = findViewById(R.id.et_name);
mPhoneEditText = findViewById(R.id.et_phone);
mAddressEditText = findViewById(R.id.et_address);
mZipCodeEditText = findViewById(R.id.et_zip_code);
mDefaultCheckBox = findViewById(R.id.cb_default_address);
mAddress = (Address) getIntent().getSerializableExtra("address");
if (mAddress != null) {
mNameEditText.setText(mAddress.getName());
mPhoneEditText.setText(mAddress.getPhone());
mAddressEditText.setText(mAddress.getAddress());
mZipCodeEditText.setText(mAddress.getZipCode());
mDefaultCheckBox.setChecked(mAddress.isDefault());
}
Button saveButton = findViewById(R.id.btn_save);
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mAddress == null) {
mAddress = new Address();
}
mAddress.setName(mNameEditText.getText().toString());
mAddress.setPhone(mPhoneEditText.getText().toString());
mAddress.setAddress(mAddressEditText.getText().toString());
mAddress.setZipCode(mZipCodeEditText.getText().toString());
mAddress.setDefault(mDefaultCheckBox.isChecked());
Intent intent = new Intent();
intent.putExtra("address", mAddress);
setResult(RESULT_OK, intent);
finish();
}
});
}
}
```
以上是一个简单的安卓收货地址管理的代码示例,仅供参考。根据实际需求,还需要进行适当的修改和完善。