마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

simpleadapter로 만든 리스트뷰 새로고침

0 추천

리스트뷰 삭제하면 바로 화면에서 삭제가 안되고 다시 들어와야 삭제되있어요

invaliate나 onResume 써봐도 안되요

 

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        list_View=(ListView)findViewById(R.id.listView1);

        sp = this.getSharedPreferences("Contact List", MODE_PRIVATE);
        ed = sp.edit();

        Map map = sp.getAll();

        List l1 = new ArrayList<>();

        Set keySet = map.keySet();
        Iterator iterator = keySet.iterator();

        while (iterator.hasNext()) {
            Map newMap = new HashMap();
            String key = (String) iterator.next();
            String value = (String)map.get(key);
            newMap.put("Name", key);
            newMap.put("Phone", value);

            l1.add(newMap);
        }
        final BaseAdapter  a1 = new SimpleAdapter(this,l1,R.layout.view_ct,
                new String[] {"Name", "Phone" },
                new int[] {R.id.textView1, R.id.textView2});
        list_View.setAdapter(a1);

        list_View.setOnItemClickListener(this);
        btn_add=(Button)findViewById(R.id.btn_add);
        btn_add.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent i = new Intent(getApplicationContext(), ActivityOne.class);
                startActivity(i);
            }
        });
    }
public void onResume(){
    list_View=(ListView)findViewById(R.id.listView1);

    sp = this.getSharedPreferences("Contact List", MODE_PRIVATE);
    ed = sp.edit();

    Map map = sp.getAll();

    List l1 = new ArrayList<>();

    Set keySet = map.keySet();
    Iterator iterator = keySet.iterator();

    while (iterator.hasNext()) {
        Map newMap = new HashMap();
        String key = (String) iterator.next();
        String value = (String)map.get(key);
        newMap.put("Name", key);
        newMap.put("Phone", value);

        l1.add(newMap);
    }
    final BaseAdapter  a1 = new SimpleAdapter(this,l1,R.layout.view_ct,
            new String[] {"Name", "Phone" },
            new int[] {R.id.textView1, R.id.textView2});
    list_View.setAdapter(a1);

    list_View.setOnItemClickListener(this);
    btn_add=(Button)findViewById(R.id.btn_add);
    btn_add.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            Intent i = new Intent(getApplicationContext(), ActivityOne.class);
            startActivity(i);
        }
    });
super.onResume();
}




    @Override
    public void onItemClick(final AdapterView <?>parent, View view, int position, long id) {


            HashMap selection = (HashMap)
                    list_View.getItemAtPosition(position);
            String name = (String) selection.get("Name");
            String number = (String) selection.get("Phone");


            ed.remove(name);
            ed.commit();





            final AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);

            alertDialog.setMessage("삭제하시겠습니까?");

        alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() {


                    public void onClick(DialogInterface dialog, int which) {

                        Toast.makeText(getApplicationContext(),
                                "전화번호삭제", Toast.LENGTH_SHORT).show();

                    }


                }
        );
        list_View.invalidate();
        alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {

                dialog.cancel();
            }
            });
            AlertDialog al = alertDialog.create();
            al.show();
        }




    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}
ㄷㅇ 님이 2016년 3월 18일 질문

1개의 답변

0 추천

리스트뷰 갱신시에는 리스트가 가지고있는 ArrayList의 사이즈에 변화가 생기면

adapter.notifyDataSetChanged();

해주시면 리스트뷰가 새로고침이 됩니다.

 

 

캬옹이 (37,920 포인트) 님이 2016년 3월 18일 답변
...