본문 바로가기

개인공부

안드로이드 : 회원 관리 프로젝트(리스트 뷰)

반응형
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_management"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:orientation="vertical"
    android:background="#d1d1d1"
    tools:context=".ManagementActivity">

    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/listView"
        android:layout_marginTop="10dp"
        android:layout_marginRight="15dp"
        android:layout_marginLeft="15dp"
        android:dividerHeight="10dp"
        android:divider="#a1a1a1"></ListView>
</LinearLayout>

management 레이아웃을 관리해줍니다

 android:orientation="vertical"

LinearLaout으로 하면 추가해줍니다

android:dividerHeight="10dp"

 

밑에 회색으로 뛰가 보이죠 ?? 그간격입니다.

 

위에 처럼 레이아웃을 꾸미면 이젠 각각의 사용자의 정보를 어떻게 넘겨줄지에 대한 레이아웃을 만들어줍니다.

 

user 라고 만들어줍니다.

 

/////////////////////////////////////////////
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="5dp"
    android:paddingBottom="5dp"
    android:background="#ffffff"
    >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/userID"
        android:text="아이디"
        android:textSize="20dp"
        android:textColor="#00a7f5"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/userPassword"
        android:text="비밀번호"
        android:textSize="15dp"
        android:textColor="#92a3f"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/userName"
        android:text="이름"
        android:textSize="20dp"
        android:textColor="#000"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/userAge"
        android:text="나이"
        android:textSize="18dp"
        android:textColor="#a902f0"/>
</LinearLayout>
//////////////////////////////
////////////////////////이것을 레이아웃에 넣으니깐 소스가 죽었어요 ㅜㅜ 되는걸로 다시밑에추가

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="5dp"
    android:paddingBottom="5dp"
    android:background="#ffffff"
    tools:context=".ManagementActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/userID"
        android:text="아이디"
        android:textSize="20dp"
        android:textColor="#00a7f5"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/userPassword"
        android:text="비밀번호"
        android:textSize="15dp"
        android:textColor="#74dff5"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/userName"
        android:text="이름"
        android:textSize="26dp"
        android:textColor="#000"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/userAge"
        android:text="나이"
        android:textSize="18dp"
        android:textColor="#7f5"
        />

</LinearLayout>

 

이게되는거다. user 레이아웃

 

user layout 디자인

 

하나의 사용자에 대한 정보를 담을수 있는 User라는 Class를 만들어줍니다.

 

 

 

 

이렇게 하면 생성자를 쉽게 만들 수 있습니다.

 

GEtter and Setter 기능을 이용해서 각각의 생성자도 만들어줍니다.

 

package org.techtown.management;

public class User {

    String userID;
    String userPassword;
    String userName;
    String userAge;

    public String getUserID() {
        return userID;
    }

    public void setUserID(String userID) {
        this.userID = userID;
    }

    public String getUserPassword() {
        return userPassword;
    }

    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserAge() {
        return userAge;
    }

    public void setUserAge(String userAge) {
        this.userAge = userAge;
    }

    public User(String userID, String userPassword, String userName, String userAge) {
        this.userID = userID;
        this.userPassword = userPassword;
        this.userName = userName;
        this.userAge = userAge;
    }

}

 

 

User Class

생성 완료

 

 

 

다음으로는 UserLsitAdapter가 필요합니다.

 

BaseAdapter를 상속받고 붉은 전구 표시를눌러 필요한 메소드들을 자동입력 받습니다.

package org.techtown.management;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;

import java.util.List;

public class UserListAdapter extends BaseAdapter {

    private Context context;
    private List<User> userList;

    //생성자 생성
    public UserListAdapter(Context context, List<User> userList){
        this.context = context;
        this.userList = userList;
    }

    @Override
    public int getCount() {
        //현재사용자의 개수 반환
        return userList.size();
    }

    @Override
    public Object getItem(int position) {
        return userList.get(position);
    }

    @Override
    public long getItemId(int position) {
        //그대로 반환
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //하나의 사용자에대한 view를 보여주는 부분
        //한명의 사용자에대한 view가 만들어진다.
        View v = View.inflate(context,R.layout.user,null);
        TextView userID = (TextView)v.findViewById(R.id.userID);
        TextView userPassword = (TextView)v.findViewById(R.id.userPassword);
        TextView userName = (TextView)v.findViewById(R.id.userName);
        TextView userAge = (TextView)v.findViewById(R.id.userAge);

        userID.setText(userList.get(position).getUserID());
        userPassword.setText(userList.get(position).getUserPassword());
        userName.setText(userList.get(position).getUserName());
        userAge.setText(userList.get(position).getUserAge());

        //특정 user에 아이디값을 그대로 반환할수 있게 해준다
        v.setTag(userList.get(position).getUserID());
        return v;

    }
}

 

userListAdapter 코딩완료

 

managementActivity로 와서 방금만든 userListAdpater를 사용해봅니다.

임폴트가 안되어있으면 Alrt + enter 로 import 해주면 됩니다.

package org.techtown.management;

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

import java.util.ArrayList;
import java.util.List;

public class ManagementActivity extends AppCompatActivity {
    //상속받아본다 만들어둔 클래스를
    private ListView listView;
    private UserListAdapter adapter;
    private List<User> userList;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_management);
        Intent intent = getIntent();
        //초기화를 해줘야지 실행이된다
        listView = (ListView) findViewById(R.id.listView);
        userList = new ArrayList<User>();

        userList.add(new User("홍민","정민","홍정","20"));
        userList.add(new User("정민","민정","김정","25"));
        userList.add(new User("정민","라로","춘정","24"));
        userList.add(new User("로민","리로","황정","22"));

        adapter = new UserListAdapter(getApplicationContext(),userList);
        listView.setAdapter(adapter);

    }
}

 

매너지먼트 파일을 이렇게 관리해주면 쉽게 관리해줄수있다 이제는 저것을

데이터베이스로 불러오게 바꾸어보자

 

위에는 내가 준값이고 이제는 데이터베이스에서 받아와보겠습니다.

 

 

package org.techtown.management;

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

import org.json.JSONArray;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class ManagementActivity extends AppCompatActivity {
    //상속받아본다 만들어둔 클래스를
    private ListView listView;
    private UserListAdapter adapter;
    private List<User> userList;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_management);
        Intent intent = getIntent();
        //초기화를 해줘야지 실행이된다
        listView = (ListView) findViewById(R.id.listView);
        userList = new ArrayList<User>();

        adapter = new UserListAdapter(getApplicationContext(),userList);
        listView.setAdapter(adapter);

        try{
            JSONObject jsonObject = new JSONObject(intent.getStringExtra("userList"));
            JSONArray jsonArray = jsonObject.getJSONArray("response");
            int count =0;
            String userID,userPassword,userName,userAge;
            while(count<jsonArray.length())
            {
                JSONObject object = jsonArray.getJSONObject(count);
                userID = object.getString("userID");
                userPassword = object.getString("userPassword");
                userName = object.getString("userName");
                userAge = object.getString("userAge");
                User user = new User(userID,userPassword,userName,userAge);
                userList.add(user);
                count++;
            }

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

    }
}

 

try catch 문을 통해서 오류를 잡아내고 JSONObject를 통해서 userList를 받아옵니다.

받아온 jsonArray의 길이 즉 회원들의 개수만큼 while문을 돌면서

각각의 값을 가져와서 add 해주는 것입니다.

 

 

출력화면

 

반응형