首页 > 解决方案 > 我创建了一个对象列表,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 方法中,但它不起作用。

标签: android

解决方案


推荐阅读