본문 바로가기

개인공부

안드로이드 : 회원 관리 프로젝트(회원 출력,버튼 hide)

반응형

 

 

 

managementButton하나를 만들어줍니다.

text이름은 회원관리 라고 해줍니다.

 

MainActivity로 돌아가서 방금 만든 버튼을 매칭해줍니다.

 

사용자 아이디가 admin과 같지 않다면 버튼을 비활성화 해줍니다.

 

버튼을 안보이게 해주는 함수.

 

<?php
    $con = mysqli_connect("localhost","ndb796android","android456","ndb796android");
    $result = mysqli_query($con, "SELECT * FROM USER;");
    $response = array();

    while($row = mysqli_fetch_array($result)){
        array_push($response, array("userID"=>$row[0], "userPassword"=>$row[1],"userName"=>$row[2],"userAge"=>$row[3]));
    }
    
    echo json_encode(array("response"=>$response));
    mysqli_close($con);
?>

 

List.php 파일

데이터파일에 접속한 이유에 모든 유저를 뽑아온다.

 

 

 

 

empty activity를 생성합니다.

이름은 ManagementActivity로 생성

 

management 레이아웃에서 userListTextView의 text view를 생성해줍니다.

 

package org.techtown.management;

import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

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

        TextView idText = (TextView) findViewById(R.id.idText);
        TextView passwordText = (TextView) findViewById(R.id.passwordText);
        TextView welcomeMessage = (TextView) findViewById(R.id.welcomeMessage);
        Button managementButton = (Button) findViewById(R.id.managementButton);

        Intent intent = getIntent();
        String userID = intent.getStringExtra("userID");
        String userPassword = intent.getStringExtra("userPassword");
        String message = "환영합니다, " + userID + "님!";

        idText.setText(userID);
        passwordText.setText(userPassword);
        welcomeMessage.setText(message);

        if(!userID.equals("admin"))
        {
            //managementButton.setEnabled(false);
            managementButton.setVisibility(View.GONE);
        }

        managementButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                new BackgroundTask().execute();
            }
        });

    }
    //내부클래스
    class BackgroundTask extends AsyncTask<Void,Void,String>
    {
        String target;

        @Override
        protected void onPreExecute(){
            target = "http://pssin1.cafe24.com/List.php";
            //초기화하는부분
        }

        @Override
        protected String doInBackground(Void... voids){
            try{
                URL url = new URL(target);
                HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                String temp;
                StringBuilder stringBuilder = new StringBuilder();
                while((temp = bufferedReader.readLine()) !=null)
                {
                    stringBuilder.append(temp + "\n");
                }
                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();

                //해당문자열의 집합 반환
                return stringBuilder.toString().trim();

            }catch (Exception e){
                e.printStackTrace();
            }
            //오류발생시 null
            return null;
        }
        @Override
        public  void onProgressUpdate(Void... values){
            super.onProgressUpdate(values);
        }


        @Override
        public void onPostExecute(String result){
            Intent intent = new Intent(MainActivity.this,ManagementActivity.class);
            intent.putExtra("userList",result);
            MainActivity.this.startActivity(intent);
        }
    }
}

Main Activity 작성

        managementButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                new BackgroundTask().execute();
            }
        });

회원 관리 버튼을 클릭 하였을 경우 BackgroundTask(내부클래스)를 실행시킵니다.

 class BackgroundTask extends AsyncTask<Void,Void,String>
    {
        String target;

        @Override
        protected void onPreExecute(){
            target = "http://pssin1.cafe24.com/List.php";
            //초기화하는부분
        }

 

내부클래스를 만들고 AsyncTask를 상속받아 사용합니다.

그리고 초기화합니다. 특정웹사이트의 php파일로

  @Override
        protected String doInBackground(Void... voids){
            try{
                URL url = new URL(target);
                HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                String temp;
                StringBuilder stringBuilder = new StringBuilder();
                while((temp = bufferedReader.readLine()) !=null)
                {
                    stringBuilder.append(temp + "\n");
                }
                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();

                //해당문자열의 집합 반환
                return stringBuilder.toString().trim();

실질적으로 실행되는 부분 null이 나올때까지 하나식 읽으면서 append 해줍니다.

 @Override
        public  void onProgressUpdate(Void... values){
            super.onProgressUpdate(values);
        }

그냥 선언만 한것

 

        @Override
        public void onPostExecute(String result){
            Intent intent = new Intent(MainActivity.this,ManagementActivity.class);
            intent.putExtra("userList",result);
            MainActivity.this.startActivity(intent);
        }

화면전환이 일어나게해줍니다

 

package org.techtown.management;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class ManagementActivity extends AppCompatActivity {

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

        TextView userListTextView = (TextView) findViewById(R.id.userListTextView);
        Intent intent = getIntent();
        userListTextView.setText(intent.getStringExtra("userList"));
    }
}

ManagementActivity 소스

 

        TextView userListTextView = (TextView) findViewById(R.id.userListTextView);
        Intent intent = getIntent();
        userListTextView.setText(intent.getStringExtra("userList"));

 

management 레이아웃 과 연결시켜주고

intent를 이용해서 값을 넘겨받는다.

그리고 userListTextView에 받아온 String값을 반환한다.

 

반응형