android - 我创建了一个对象列表,listview 不会显示它
问题描述
我是 android 新手,我有一个问题。我的 ListView 不会显示我的对象列表。在 SelectSocketActivity 中,我尝试显示可以选择并发送到另一个活动的套接字列表。我将新对象添加到列表中,方法是将它们添加到 AddSocketActivity 并以意图发送它们。
SelectSocketActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_socket);
Button btnSchimbaStarePriza = findViewById(R.id.btnSwitchState);
Button btnAdaugaPrizaNoua = findViewById(R.id.btnPrizaNoua);
Button btnDelogare = findViewById(R.id.btnDelogare);
// List<String> socketsStrings = new ArrayList<>();
socketList = new ArrayList<>();
listView = findViewById(R.id.listViewSockets);
adapter = new ArrayAdapter<Socket>(getApplicationContext(), android.R.layout.simple_list_item_1, socketList);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
poz = position;
Intent intent = new Intent(getApplicationContext(), SwitchSocketStateActivity.class);
intent.putExtra(Switch_State, (Parcelable) socketList.get(poz));
startActivityForResult(intent, REQUEST_CODE_Switch);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) {
Socket socket = (Socket) data.getSerializableExtra(AddSocketActivity.ADD_Socket);
if(socket != null){
socketList.add(socket);
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), socket.toString(), Toast.LENGTH_SHORT).show();
}
}
}
AddSocketActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_socket);
edIdNewSocket = findViewById(R.id.etIdSocket);
btnAddIdSocket = findViewById(R.id.btnAdauga);
btnBack = findViewById(R.id.btnBack);
intent = getIntent();
btnAddIdSocket.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(edIdNewSocket.getText().toString().isEmpty()){
edIdNewSocket.setError("Introduceti id priza fizica!");
} else {
Socket socket = new Socket(edIdNewSocket.getText().toString());
intent.putExtra(ADD_Socket, socket);
setResult(RESULT_OK, intent);
finish();
}
}
});
我能做些什么?我也尝试调用 adapter.notifyDataSetChanged(); 在 onStartActivity 方法中,但它不起作用。