ParkEdu
20
2021-05-10 12:12:28
4
201

안드로이드스튜디오(자바) 질문입니다 ! ㅠ도와주세요


안녕하세요 앱 개발 공모전 준비중인 대학생입니다!!


완전 초보라 진짜 자바의 기초 지식정도 수준밖에 없습니다 ㅠ 도와주세요


앱의 목적은  '불필요한 카톡방 수를 줄이고, 공지를 1~4학년 나눠서 따로 하지않고 한번에 편하게 하자' 라는 기능이 주가 되는 것입니다.


현재 진행상황입니다 ! 


1. 로그인 및 DB연동(학생,관리자 구분) 성공

2. 로그인을 한뒤 관리자만 클릭할 수 있는 버튼 구현 성공//학생은 버튼 클릭시 '권한없다'는 토스트메세지 나옴

3. 채팅창 만들어야함 ,,, 하지만 모든과의 XML을 만드려면 수백개가 필요 ㅠ


질문 핵심 : 학교에 과가 40개가 넘는데(컴퓨터공학,수학,기계공학.. 등)채팅창(XML)을 하나 만들어 놓으면 여러개 반복문(?)을 사용하여 계속 생성할 수 있는지 궁금합니다.


EX) 카톡처럼 자신의 계정으로 로그인하면 자신의 카톡방만 나오게 하고싶은겁니다


=

'컴공과의 2학년'으로 로그인하면 , 컴공(과)을 구분하여지고 학년(1~4)도 구분해져서 해당 학생이 앱을 키면 바로 컴공,2학년에 맞는 카톡방이 화면에 보이지게 하고싶은 것 입니다. 



0
  • 답변 4

  • 금융권개발자
    46
    2021-05-10 13:19:57

    1. 로그인 및 DB연동(학생,관리자 구분) 성공

    => SQLIT방식으로 구현한건가요?

      외부DB사용하고 싶은데 서버쪽을 스프링으로 구현후 AsyncTask방식 으로 값을 받아오면 되거든요.

    2. 로그인을 한뒤 관리자만 클릭할 수 있는 버튼 구현 성공//학생은 버튼 클릭시 '권한없다'는 토스트메세지 나옴

    =>세션이나 쿠키처리 구현은 한건가요?

    3. 채팅창 만들어야함 ,,, 하지만 모든과의 XML을 만드려면 수백개가 필요 ㅠ

    =>카카오톡처럼 구현을 하겠다는얘기인거죠?

    왜 XML 수백개가 필요하죠?


  • ParkEdu
    20
    2021-05-10 15:37:32 작성 2021-05-10 15:39:42 수정됨

    일단 답변 너무 감사합니다 !!


    => SQLIT방식으로 구현한건가요?


    => 제가 진짜 초보라 잘 모르는데 ㅠㅠ이 구문 사용해서 파일질라랑 연동 했습니다

     final  static private String URL = "http://cheam3333.dothome.co.kr/Login.php";

    private Map<String,String> map;

    public LoginRequest(String userID, String userPassword, Response.Listener<String> listener){
    super(Method.POST, URL, listener, null);

    map = new HashMap<>();
    map.put("userID",userID);
    map.put("userPassword", userPassword);
    }


    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
    return map;
    }
    }


    세션이나 쿠키처리 구현은 한건가요? 


    => 잘 모르겠습니다,, 이렇게 했는데 구현 된건가요?


    package com.example.cc_2;

    import androidx.appcompat.app.AppCompatActivity;

    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;

    import com.android.volley.RequestQueue;
    import com.android.volley.Response;
    import com.android.volley.toolbox.Volley;

    import org.json.JSONException;
    import org.json.JSONObject;

    public class LoginActivity extends AppCompatActivity {

    private EditText et_id, et_pass, et_name, et_age;
    private Button btn_login, btn_register;
    public String admin_id = "a";


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

    et_id = findViewById(R.id.et_id);
    et_pass = findViewById(R.id.et_pass);
    btn_login = findViewById(R.id.btn_login);
    btn_register = findViewById(R.id.btn_register);

    btn_register.setOnClickListener(new View.OnClickListener() { //회원가입 버튼을 클릭시 수행
    @Override
    public void onClick(View v) {
    Intent intent = new Intent(LoginActivity.this,RegisterActivity.class);
    startActivity(intent);
    }
    });

    btn_login.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    String userID = et_id.getText().toString();
    String userPass = et_pass.getText().toString();

    Response.Listener<String> responseListener = new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {

    try {
    JSONObject jsonObject = new JSONObject(response);
    boolean success = jsonObject.getBoolean("success");
    if(success) { //로그인에 성공한 경우
    String userID = jsonObject.getString("userID");
    String userPass = jsonObject.getString("userPassword");
    if(userID.equals(admin_id)){
    Toast.makeText(getApplicationContext(),"관리자 로그인에 성공하였습니다.",Toast.LENGTH_SHORT).show();
    Intent intent = new Intent(LoginActivity.this,MainActivity.class);
    intent.putExtra("userID",userID);
    intent.putExtra("userPass",userPass);
    startActivity(intent);
    }
    else{
    Toast.makeText(getApplicationContext(),"로그인에 성공하였습니다.",Toast.LENGTH_SHORT).show();
    Intent intent = new Intent(LoginActivity.this,MainActivity.class);
    intent.putExtra("userID",userID);
    intent.putExtra("userPass",userPass);
    startActivity(intent);
    }

    } else {
    Toast.makeText(getApplicationContext(),"로그인에 실패하였습니다.",Toast.LENGTH_SHORT).show();
    return;

    }
    } catch (JSONException e) {
    e.printStackTrace();
    }

    }
    };
    LoginRequest loginRequest = new LoginRequest(userID, userPass, responseListener);
    RequestQueue queue = Volley.newRequestQueue(LoginActivity.this);
    queue.add(loginRequest);


    }
    });
    }
    }




    카카오톡처럼 구현을 하겠다는얘기인거죠?

    왜 XML 수백개가 필요하죠?


    ==>  제가 아는 지식이 없어서 제 수준에서는 각 학과의 학년마다 하나씩 XML을 만들어야할 것 같아서 질문 드렸습니다  ㅠ 그래서  위에 반복분 같은걸로 하나 만들어 놓으면 계속 생성할 수 있는지 문의 드렸습니다 !


  • OkkyActivity
    418
    2021-05-10 17:13:18

    핵심질문에 대해서만 답변드리자면, 

    가능합니다.


    [학과] 는 데이터 이구요.

    동일한 패턴이 반복되는 이 데이터를 가지고 질문자님이 원하시는 뷰를 만들 수 있는데.


    이게 안드로이드에서는 [RecyclerView] 입니다.


    Recycler View 에 대해서 구글에 검색해보시고 아주 간단한 예제부터 몇개 파 보시면 


    내가 가지고 있는 데이터를 어떤식으로 반복해서 표시해줘야 할 지 감이오실거에요

  • ParkEdu
    20
    2021-05-10 17:45:57

    친절한 답변 너무 감사합니다 !!  해볼게요 !!

  • 로그인을 하시면 답변을 등록할 수 있습니다.