본문 바로가기
[ Developer ]/Android

[Android] 안드로이드로 간단한 게시판 만들어보기

by 김현섭. 2016. 7. 8.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Android 간단한 게시판 구성

@ 글 생성 및 버튼 출력
안드로이드에서 게시판을 구성해보기 위해서 Android Studio에서 프로젝트를 하나 생성한다
SimpleBoard

프로젝트 생성 후 simpleboard에 패키지를 하나 생성한다


이제는 db라는 패키지 내에 SimpleDB를 하나 생성한다
간단한 DB를 생성하기 위함이다

그리고 vo라는 패키지 생성 후 ArticleVO라는 클래스를 하나 생성한다


그리고 난 후 getter / setter를 생성해 주기 위해서 Alt + insert를 이용해서 생성한다
그런 후 생성자도 생성해준다


그리고 난 후 SimpleDB에 HashMap으로써 DB 기능을 할 것이다
 db 기능을 하는 메소드들을 정의해준다


위와 같은 방식으로 db의 기능을 간단하게 하는 HashMap을 생성한 것

그런 후 activity_main.xml에 가서 조금 수정한다


위와 같이 변경을 해주거나 추가를 해주면 된다
이제는 MainActivity에서 코드로써 버튼을 추가하는 방식을 본다


위와 같이 작성 후엔 밑에 게시글을 작성하는 메소드를 생성한다


버튼을 통해서 99개의 게시글을 생성하는 메소드를 정의한다
이제 코드로 버튼을 생성했던 부분에 반복을 시킬 것이다


for문을 이용해서 감싸주기만 하면 된다
그러면 이제 i번글 이라는 제목의 버튼이 생성될 것이다


위와 같이 작성되었다면 결과를 보면 버튼이 99개 생성된다



*MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        prepareSimpleDB();
 
        LinearLayout ll = (LinearLayout) findViewById(R.id.itemList);
 
        // 반복 시작
        //
        for ( int i = 0; i < SimpleDB.getIndexes().size(); i++ ) {
            Button button = new AppCompatButton(this);
            button.setText(SimpleDB.getIndexes().get(i));
 
            ll.addView(button);
        }
        //
        // 반복 끝
    }
 
    private void prepareSimpleDB() {
 
        for ( int i = 1; i < 100; i++ ){
            SimpleDB.addArticle(i + "번글"new ArticleVO(i, i + "번글 제목", i + "번글 내용""내가"));
        }
    }
}
cs

*SimpleDB.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class SimpleDB {
 
    private static Map<String, ArticleVO> db = new HashMap<String, ArticleVO>();
 
    public static void addArticle(String index, ArticleVO articleVO) {
        db.put(index, articleVO);
    }
 
    public static ArticleVO getArticle(String index) {
        return db.get(index);
    }
 
    public static List<String> getIndexes() {
        Iterator<String> keys = db.keySet().iterator();
 
        List<String> keyList = new ArrayList<String>();
        String key = "";
        while ( keys.hasNext() ) {
            key = keys.next();
            keyList.add(key);
        }
 
        return keyList;
    }
}
cs



@ 글 보기
이제는 버튼을 클릭 시 해당 글의 내용을 볼 수 있도록 생성한다

DetailActivity를 생성한다


그런 후 기존의 MainActivity에서 클릭 이벤트를 준다


위와 같이 생성되면 방금 만든 DetailActivity로 key값을 넘길 수 있는 것이다
이제 DetailActivity에서 보여주는 작업를 한다


우선 Intent를 받아오기 위해서 위와 같은 로직으로 생성을 한 후 articleVO를 메소드를 통해서 가져오는 방식이 된다
이제는 activity_detail.xml에서 단순히 보여주는 작업을 한다


위와 같이 추가를 해주고 난 후 이제 DetailActivity로 가서 로직을 마저 작성한다


우선 위의 텍스트 뷰를 변수로 갖게끔 선언을 해준수 onCreate에서 텍스트뷰를 가져온다


텍스트 뷰를 가져온 후 setText를 이용하여 articleVO에 담긴 (현재 선택된 게시글 정보)를 넣어준다

*DetailActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class DetailActivity extends AppCompatActivity {
 
    private TextView tvSubject;
    private TextView tvArticleNumber;
    private TextView tvAuthor;
    private TextView tvDescription;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
 
        tvSubject = (TextView) findViewById(R.id.tvSubject);
        tvArticleNumber = (TextView) findViewById(R.id.tvArticleNumber);
        tvAuthor = (TextView) findViewById(R.id.tvAuthor);
        tvDescription = (TextView) findViewById(R.id.tvDescription);
 
        Intent intent = getIntent();
        String key = intent.getStringExtra("key");
 
        ArticleVO articleVO = SimpleDB.getArticle(key);
 
        tvSubject.setText(articleVO.getSubject());
        tvArticleNumber.setText(articleVO.getArticleNo() + "");
        tvAuthor.setText(articleVO.getAuthor());
        tvDescription.setText(articleVO.getDescription());
    }
}
cs