안드로이드 코 틀린 : 어떻게 다른 (3) 활동에서 업데이트 목록보기에

jt_3232 :

나는 다른 활동을 열고 "추가 플레이어"의 주요 활동에 버튼이 코 틀린에 안드로이드 응용 프로그램을 구축하고있다. 이 "선수 추가"활동에서 수동으로 3 "팝업"활동을 제공 플레이어를 추가 할 수 있습니다. 사람이 정보를 입력 한 후 안타를 추가. 그 클릭에, 나는 즉시 주요 활동에 대한 활성 플레이어의 목록보기를 새로운 "플레이어"개체를 생성하고 업데이트 할.

나는를 사용하여 읽을 수 adapter.notifyDataSetChanged()있지만, 문제는 내가 그 어댑터 (ArrayAdapter와) 객체에 대한 참조를 얻을 수있는 방법을 찾을 수있다. 이 자바라면, 난 그냥 어댑터가 전 세계적으로 사용할 수 있도록 것, 또는 공용 정적, 뭐 그런. 그러나,이 모든 것이 나를 위해 지옥으로 혼란 코 틀린입니다. 모든 사람이 전달하는 "컨텍스트"매개 변수 "이"일을하지 않기 때문에 내가 어댑터를 초기화 할 수 없습니다 때문에 어댑터가 전 세계적으로 제공 할 수 없습니다. 나는 공공 또는 정적로 변경 어떤 기능을 할 수 없습니다. 코 틀린 어떤 이유로 화가 나이기 때문에 나는 또한 두 변수를 lateinit 수 없습니다.

나는 내 애플 리케이션을위한 바보의 ListView를 업데이트하려고 2시간처럼 보냈다. 내가 만드는 애플 리케이션을 실천하고이 같은 작은 물건에 잡힐 때 그것은 꽤 낙담한다.

나는 큰 오해를 확신하지만, 누군가가 올바른 방향으로 날 지점 수 있다면, 그것은 좋은 것입니다!

당신에게 매우 많은 사람을 감사

기타

킹 피셔 푸옥 :

어댑터 /보기 / ActivityContext 전역 변수를하지 마십시오, 그렇지 않으면 당신은 정말 큰 메모리 문제를 얻을 것이다.

당신은 사용하려고합니다 지역 방송 수신기 . 어댑터를 가지고 활동 A로부터, 당신은 등록 할 수 Local BroadCast receiver있는을 onCreate어떤 변화 어댑터 액션을 듣고. 다음의 예는 다음과 같습니다

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("YourAdapaterChangeAction.");

LocalBroadcastManager.getInstance(this).registerReceiver(new BroadcastReceiver() {
        @Override
        public void onReceive(final Context context, final Intent intent) {
            // check your action with if/else
            //adapter.notify....
        }
},intentFilter);

그 후, 당신은 해고 할 수있는 LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent("YourAdapaterChangeAction"));어댑터를 업데이트하는 모든 활동에서.

P / S : 다른 옵션은 사용하는 것입니다 startActivityForResult.

추천

출처http://43.154.161.224:23101/article/api/json?id=343205&siteId=1