Я хочу обновить экран, используя notifydatasetchanged. Но я не буду запускать это. < /P>
Данные входят в БД. Но экран не меняется. Когда я попробую еще раз, < /p>
изменяется. Я думаю, что проблема заключается в ситуации, в которой она работает. Когда < /p>
я должен начать? Я ввел данные в диалоговом окне. И notifydatasetchanged был выполнен в Asynctask. < /H2>
public class MainActivity extends AppCompatActivity {
private Spinner spinner;
private String userPassword;
private String userGender;
private String userMajor;
private String userEmail;
private AlertDialog dialog; //알림창을 보여줌
private boolean validate = false; //사용할 수 있는 회원 아이디인지 체크
private static String userID = "a";//연결하면 메인에서 아이디를 받아와야함.
private TextView userIDtext;//목록에 대한 안내가 있는 텍스트
private ListView smsNumberViewList;//전화번호가 기록되는 리스트뷰
private SmsNumberAdapter adapter;//
private List smsNumberList;
//sms등록 할떄 묻는 다이얼로그들
private Dialog smsInsertDialog;
private Button dialog_reg;
private Button dialog_cancel;
private TextView dialog_text;
private String smsNumCountCheck;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
smsNumberViewList=(ListView)findViewById(R.id.smsNumberViewList);
smsNumberList = new ArrayList();
userIDtext=(TextView)findViewById(R.id.userIDtext);
userIDtext.setText(userID+"님이 등록한 비상연럭처"); //알림 글
//adapter는 해당 List를 매칭 (각각 차례대로 매칭)
adapter = new SmsNumberAdapter(getApplicationContext(),smsNumberList);
smsNumberViewList.setAdapter(adapter);
((Button) findViewById(R.id.click)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//등록 버튼을 눌렀을 떄 다이얼 로그 창이 나옴.
smsInsertDialog = new Dialog(MainActivity.this);
smsInsertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
//다이얼로그 화면 구성하기.
smsInsertDialog.setContentView(R.layout.smsinsertdialog);
dialog_reg=(Button)smsInsertDialog.findViewById(R.id.dialog_reg);
dialog_cancel=(Button)smsInsertDialog.findViewById(R.id.dialog_cancel);
dialog_reg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/* if(smsNumberList.){
//다이얼로그 종료
smsInsertDialog.dismiss();
}*/
Response.Listener responseListener = new Response.Listener() {
@Override
public void onResponse(String response) {
// 해당 웹사이트에 접속한 뒤 특정한 response(응답)을 다시 받을 수 있도록 한다
try {
JSONObject jsonResponse = new JSONObject(response);
boolean success = jsonResponse.getBoolean("success");
// 만약 사용할 수 있는 아이디라면
if (success) {
Toast.makeText(MainActivity.this, "success", Toast.LENGTH_LONG).show();
}
// 중복체크 실패 (사용할 수 없는 아이디)
else {
Toast.makeText(MainActivity.this, "failed", Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
// 실질적으로 접속할 수 있도록 생성자를 통해 객체를 만든다. (유저 ID, responseListener)
// ValidateRequest.java라는 파일을 만들어야 한다.
smsDB_Manager smsRequest = new smsDB_Manager(userID, ((EditText) findViewById(R.id.smsNum1)).getText().toString(), ((EditText) findViewById(R.id.numsName)).getText().toString(), responseListener);
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
queue.add(smsRequest); //준비된 데이터를 받아 통신을 시작한다.
queue.start();
new BackgroundTask().execute();//등록 버튼을 누르면 리스트 스레드를 돌려서 리스트를 만들어줌.
Toast.makeText(getApplicationContext(),"등록되었습니다.",Toast.LENGTH_SHORT).show();
//다이얼로그 종료
smsInsertDialog.dismiss();
}
});
//취소하면 그냥 취소됐다는 걸 알리는 토스트창 하나 띄워주고 종료함.
dialog_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//취소시에 종료 토스트 출력하기.
Toast.makeText(getApplicationContext(),"취소되었습니다.",Toast.LENGTH_SHORT).show();
//다이얼로그 종료
smsInsertDialog.dismiss();
}
});
//다이얼로그 화면에 보여주기
smsInsertDialog.show();
}
}
);
new BackgroundTask().execute();
}
< /code>
class BackgroundTask extends AsyncTask {
// (로딩창 띄우기 작업 3/1) 로딩창을 띄우기 위해 선언해준다.
ProgressDialog dialog = new ProgressDialog(MainActivity.this);
String target; //우리가 접속할 홈페이지 주소가 들어감
@Override
protected void onPreExecute() {
target = "http://...; //해당 웹 서버에 접속
// (로딩창 띄우기 작업 3/2)
dialog.setMessage("로딩중");
dialog.show();
} @Override
protected String doInBackground(Void... voids) {
try {
// 해당 서버에 접속할 수 있도록 URL을 커넥팅 한다.
URL url = new URL(target);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
// 넘어오는 결과값을 그대로 저장
InputStream inputStream = httpURLConnection.getInputStream();
// 해당 inputStream에 있던 내용들을 버퍼에 담아서 읽을 수 있도록 해줌
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
// 이제 temp에 하나씩 읽어와서 그것을 문자열 형태로 저장
String temp;
StringBuilder stringBuilder = new StringBuilder();
// null 값이 아닐 때까지 계속 반복해서 읽어온다.
while ((temp = bufferedReader.readLine()) != null) {
// temp에 한줄씩 추가하면서 넣어줌
stringBuilder.append(temp + "\n");
}
// 끝난 뒤 닫기
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect(); //인터넷도 끊어줌
return stringBuilder.toString().trim();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
public void onProgressUpdate(Void... values) {
super.onProgressUpdate();
}
@Override //해당 결과를 처리할 수 있는 onPostExecute()
public void onPostExecute(String result) {
try {
// 해당 결과(result) 응답 부분을 처리
JSONObject jsonObject = new JSONObject(result);
// response에 각각의 공지사항 리스트가 담기게 됨
JSONArray jsonArray = jsonObject.getJSONArray("response"); //아까 변수 이름
int count = 0;
String userID,numsName;
String smsNum1;
while (count < jsonArray.length()) {
// 현재 배열의 원소값을 저장
JSONObject object = jsonArray.getJSONObject(count);
// 공지사항의 Content, Name, Date에 해당하는 값을 가져와라는 뜻
userID = object.getString("userID");
smsNum1 = object.getString("smsNum1");
numsName = object.getString("numsName");
// 하나의 공지사항에 대한 객체를 만들어줌
SmsNumber smsNumber = new SmsNumber(userID, smsNum1,numsName);
smsNumCountCheck=smsNum1;
//리스트에 추가해줌
smsNumberList.add(smsNumber);
adapter.notifyDataSetChanged();
count++;
}
// (로딩창 띄우기 작업 3/3)
// 작업이 끝나면 로딩창을 종료시킨다.
dialog.dismiss();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/487 ... via-dialog
NotifyDatasetchAnged () не обновляется ListView после введения данных через диалог ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Android Xamarin С# NotifyDataSetChanged из RecyclerView не работает с фрагментом
Anonymous » » в форуме Android - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Vuetify, когда диалог открывается из пункта меню. Диалог открылся, но меню все еще появляется
Anonymous » » в форуме CSS - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-