Как обновить просмотр списка - PullRequest
0 голосов
/ 24 января 2020

Я новичок в android studio и в настоящее время работаю над приложением, в котором у вас есть listview и ArrayAdapter , содержащие элементы. Вы можете создавать новые элементы и удалять их. Это моя MainActivity :

class MainActivity : AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val listView = main_toDoList.findViewById<ListView>(R.id.main_toDoList)
        listView.adapter = ArrayAdapter<ToDo>(
            this,
            android.R.layout.simple_list_item_1,
            android.R.id.text1,
            toDoRepository.getAllToDos()
        )

        listView.setOnItemClickListener { parent, view, position, id ->

            val item = listView.getItemAtPosition(position)
            val itemId = listView.adapter.getItem(position) as ToDo
            val todo = toDoRepository.getToDoById(itemId.id)

            Toast.makeText(applicationContext, "Clicked on $item", Toast.LENGTH_LONG).show()

            // Start another activity
            if (todo != null) {
                val intent = Intent(this, ViewToDoActivity::class.java)
                intent.putExtra(ViewToDoActivity.EXTRA_TODO_ID, todo.id)
                startActivity(intent)
            } else {
                Toast.makeText(applicationContext, "Error", Toast.LENGTH_LONG).show()
            }
        }

        createButton.setOnClickListener {
            createButton.setBackgroundColor(Color.BLACK)
            val intent = Intent(this, CreateToDoActivity::class.java)
            startActivity(intent)
        }


    }

    override fun onStart() {
        super.onStart()
        Toast.makeText(applicationContext, "Returning from activity", Toast.LENGTH_LONG).show()

    }

 }

Когда я создал новый элемент и нажал кнопку "Назад", я снова приду к MainActivity . Теперь я хочу перезагрузить предметы. Я знаю, что должен использовать мой ArrayAdapter для вызова notifyDataChanged в методе onStart . У меня вопрос, как мне получить мой ArrayAdapter в методе onStart ?

1 Ответ

1 голос
/ 24 января 2020

Вам нужна ссылка на недвижимость в вашем классе:

class MainActivity : AppCompatActivity() {

    private lateinit var listAdapter: ArrayAdapter<Todo>

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val listView = main_toDoList.findViewById<ListView>(R.id.main_toDoList)
        listAdapter = ArrayAdapter<ToDo>(
            this,
            android.R.layout.simple_list_item_1,
            android.R.id.text1,
            toDoRepository.getAllToDos()
        )
        listView.adapter = listAdapter

        //...
    }

    override fun onStart() {
        super.onStart()
        //do something with listAdapter
    }

 }
...