如何从 Activity 在 Singleton Arraylist 中设置数据
How to setData in Singleton Arraylist from an Activity
首先:我在 Android Studio(Java) 上,我尝试在 OnClick 之后在我的单例(数组列表)中从 Activity 设置数据。
我想在单身人士中更新的数据:姓名、街道。
其次:因为它是一个 ArrayList 我需要使用 get(position) 吗?我如何指定我想要这个
列表的字段而不是这个(例如 Street2 而不是 street1 ...)
单例:
public class PanelDataSource {
private static PanelDataSource mInstance;
private ArrayList<Panel> listPanel;
public static PanelDataSource getInstance() {
if (mInstance == null)
mInstance = new PanelDataSource();
return mInstance;
}
private PanelDataSource() {
ArrayList<Block> listBlock = BlockDataSource.getInstance().getListBlock();
ArrayList<Block> listBlockSPB = BlockDataSource.getInstance().getListBlockSPB();
listPanel = new ArrayList<Panel>();
listPanel.add(new Panel("Name", "Street", "ID 123456789", listBlock,listBlockSPB));
listPanel.add(new Panel("Name2", "Steert2", "ID 234567890", listBlock,listBlockSPB));
}
// retrieve array from anywhere
public ArrayList<Panel> getListPanel() {
return this.listPanel;
}}
activity 是我更新我的数据(我想在 Singleton 中为 setData/Update 使用 OnClick ..
public class Activity_PanelSettingsEdit extends AppCompatActivity {
private TextView panelSettingsEditId;
private EditText panelSettingsEditName, panelSettingsEditStreet;
private String name, street, id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_panelsettingsedit);
panelSettingsEditId = findViewById(R.id.panelSettingsEditId);
panelSettingsEditName = findViewById(R.id.PanelSettingsEditName);
panelSettingsEditStreet = findViewById(R.id.panelSettingsEditStreet);
Button buttonValidateSettingsEdit = (Button) findViewById(R.id.buttonValidateSettingsEdit);
buttonValidateSettingsEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent panelSettingsEditValidateIntent = new Intent(Activity_PanelSettingsEdit.this, Activity_PanelSettings.class);
panelSettingsEditValidateIntent.putExtra("name",name);
panelSettingsEditValidateIntent.putExtra("street",street);
panelSettingsEditValidateIntent.putExtra("id",id);
v.getContext().startActivity(panelSettingsEditValidateIntent);
}
});
getData();
setData();
}
private void getData() {
name = getIntent().getStringExtra("name");
street = getIntent().getStringExtra("street");
id = getIntent().getStringExtra("id");
}
private void setData() {
panelSettingsEditId.setText(id);
panelSettingsEditName.setText(name);
panelSettingsEditStreet.setText(street);
}}
第一部分:
您可以在 onClick() 中访问您的 PanelDataSource 单例实例,然后可以执行如下操作。
PanelDataSource.getInstance().getListPanel().add(new Panel(name, street, id, BlockDataSource.getInstance().getListBlock(),BlockDataSource.getInstance().getListBlockSPB()));
name:面板名称
street: 面板的街道名称
id:面板标识
和两个List<Block>
第二部分:
如果您需要使用该名称访问您的面板,最好使用 HashMap
之类的方式将您的数据保存在 {key, value} 对中。
如果 Streetname 被用作保存 Panel 数据的密钥,那么您可以使用 StreetName 访问您的面板。但请确保 Streetname 是唯一的,并且任何两个 Panel 都不应共享相同的 StreetName,否则它将被最新的 Panel 覆盖。
首先:我在 Android Studio(Java) 上,我尝试在 OnClick 之后在我的单例(数组列表)中从 Activity 设置数据。
我想在单身人士中更新的数据:姓名、街道。
其次:因为它是一个 ArrayList 我需要使用 get(position) 吗?我如何指定我想要这个 列表的字段而不是这个(例如 Street2 而不是 street1 ...)
单例:
public class PanelDataSource {
private static PanelDataSource mInstance;
private ArrayList<Panel> listPanel;
public static PanelDataSource getInstance() {
if (mInstance == null)
mInstance = new PanelDataSource();
return mInstance;
}
private PanelDataSource() {
ArrayList<Block> listBlock = BlockDataSource.getInstance().getListBlock();
ArrayList<Block> listBlockSPB = BlockDataSource.getInstance().getListBlockSPB();
listPanel = new ArrayList<Panel>();
listPanel.add(new Panel("Name", "Street", "ID 123456789", listBlock,listBlockSPB));
listPanel.add(new Panel("Name2", "Steert2", "ID 234567890", listBlock,listBlockSPB));
}
// retrieve array from anywhere
public ArrayList<Panel> getListPanel() {
return this.listPanel;
}}
activity 是我更新我的数据(我想在 Singleton 中为 setData/Update 使用 OnClick ..
public class Activity_PanelSettingsEdit extends AppCompatActivity {
private TextView panelSettingsEditId;
private EditText panelSettingsEditName, panelSettingsEditStreet;
private String name, street, id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_panelsettingsedit);
panelSettingsEditId = findViewById(R.id.panelSettingsEditId);
panelSettingsEditName = findViewById(R.id.PanelSettingsEditName);
panelSettingsEditStreet = findViewById(R.id.panelSettingsEditStreet);
Button buttonValidateSettingsEdit = (Button) findViewById(R.id.buttonValidateSettingsEdit);
buttonValidateSettingsEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent panelSettingsEditValidateIntent = new Intent(Activity_PanelSettingsEdit.this, Activity_PanelSettings.class);
panelSettingsEditValidateIntent.putExtra("name",name);
panelSettingsEditValidateIntent.putExtra("street",street);
panelSettingsEditValidateIntent.putExtra("id",id);
v.getContext().startActivity(panelSettingsEditValidateIntent);
}
});
getData();
setData();
}
private void getData() {
name = getIntent().getStringExtra("name");
street = getIntent().getStringExtra("street");
id = getIntent().getStringExtra("id");
}
private void setData() {
panelSettingsEditId.setText(id);
panelSettingsEditName.setText(name);
panelSettingsEditStreet.setText(street);
}}
第一部分:
您可以在 onClick() 中访问您的 PanelDataSource 单例实例,然后可以执行如下操作。
PanelDataSource.getInstance().getListPanel().add(new Panel(name, street, id, BlockDataSource.getInstance().getListBlock(),BlockDataSource.getInstance().getListBlockSPB()));
name:面板名称
street: 面板的街道名称
id:面板标识
和两个List<Block>
第二部分:
如果您需要使用该名称访问您的面板,最好使用 HashMap
之类的方式将您的数据保存在 {key, value} 对中。
如果 Streetname 被用作保存 Panel 数据的密钥,那么您可以使用 StreetName 访问您的面板。但请确保 Streetname 是唯一的,并且任何两个 Panel 都不应共享相同的 StreetName,否则它将被最新的 Panel 覆盖。