2013-07-03 2 views
0

나는 안드로이드 애플 리케이션을 개발하는 것으로 시작하고 있습니다. 텍스트를 추가 할 수있는 대화 상자를 만들었습니다. 확인을 클릭하면 onResume() 또는 이와 유사한 것으로부터 활동이 시작될 것으로 예상됩니다. 대화 상자에서 확인을 클릭하면 ListView를 업데이트하고 싶습니다.업데이트 목록보기 대화 상자를 채운 후

UPDATE

MainActivity :

public class MainActivity extends FragmentActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.server_list); 

} 

@Override 
protected void onResume() { 
    super.onResume(); 

    //database query and call showServerList 

} 

public void showServerList(ArrayList<HashMap<String, String>> servers){ 

    ListView list = (ListView) findViewById(R.id.server_list); 

    ListAdapter adapter = new SimpleAdapter(MainActivity.this, servers, R.layout.server_list_entry, 
      new String[] {"name"}, new int[]{R.id.server_name}); 

    list.setAdapter(adapter); 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    getMenuInflater().inflate(R.menu.main, menu);   

    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 
     case R.id.action_add_server: 
      DialogFragment newFragment = new AddServerDialog(); 
      newFragment.show(getSupportFragmentManager(), "addServer"); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

AddServerDialog :

public class AddServerDialog extends DialogFragment { 

View view; 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

    LayoutInflater inflater = getActivity().getLayoutInflater(); 

    view = inflater.inflate(R.layout.dialog_add_server, null); 

    builder.setView(view) 

      .setPositiveButton("Add", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int id) { 


        EditText name = (EditText) view.findViewById(R.id.add_server_name); 
        EditText url = (EditText) view.findViewById(R.id.add_server_address); 

        if(name.getText().toString().isEmpty() || url.getText().toString().isEmpty()){ 
         getDialog().cancel(); 
        }else{ 

         HashMap<String,String> map = new HashMap<String,String>(); 
         map.put("name", name.getText().toString()); 
         map.put("url", url.getText().toString()); 
         //Database query with insert 

        } 
       } 
      }) 
      .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        getDialog().cancel(); 
       } 
      });  
    return builder.create(); 
} 

}

+0

추가 코드가, 또는에 사용을 시도 할 수 있습니다하시기 바랍니다 listView에 데이터를 설정 한 메소드를 호출하고 listView에 대한 어댑터의 notifyDataSetChanged() 메소드를 호출하십시오. –

+0

네, 여기 있습니다. 어쩌면 모두 잘못 됐을 수도 있습니다. 안드로이드로 3 번째 날입니다. –

+1

죄송합니다, 지금 작동합니다. 나는 긴장을 풀 시간이 필요했다. –

답변

0
dialog.setButton("OK", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
        //listview.getAdapter().items = newItems... 
        listview.getAdapter().notifyDataSetChanged(); 
      } 
    }); 
관련 문제