일부분 소스는 아래 나올테지만 전체소스를 보고싶다면~
https://yangcottondev.tistory.com/36
[안드로이드 스튜디오] GCS 앱 만들기 - 전체소스
MainActivity.java package com.example.gcs; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.view.Layo
yangcottondev.tistory.com
1. EditText 사용하여 앱에서 글 쓰기
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:id="@+id/addTitle"
android:hint="대분류 제목을 적으시오"
android:focusable="true"
android:focusableInTouchMode="true"
/>
일단 xml은 이렇다.
hint 기능을 사용하면 예시를 줄 수 있다.
글을 쓰면 예시인 hint가 사라지고 또 글을 지워 공백인 상태면 hint 가 다시 나타난다.
//대분류 제목
EditText addTitle = (EditText) findViewById(R.id.addTitle);
String text = addTitle.getText().toString(); // EditText에 입력된 문자열값을 얻기
2. 리스트생성 , 내가 쓴 글 리스트에 추가, 리스트 삭제
이번엔 앱에서 글을 쓰고 그걸 리스트에 넣어보겠다.
소스가 길어서 접어 놓겠다. 더보기 확인!
더보기
package com.example.gcs;
import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
public class AddNewList extends AppCompatActivity {
TextView content;
ArrayList<String> items;
ArrayAdapter<String> adapter;
ListView listView;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_new_list);
content = (TextView) findViewById(R.id.content);
//데이터 준비
items = new ArrayList<String>();
// 어댑터 생성
adapter = new ArrayAdapter<String>(AddNewList.this,
android.R.layout.simple_list_item_single_choice, items);
// 어댑터 설정
listView = (ListView) findViewById(R.id.listView);
listView.setAdapter(adapter);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); // 하나의 항목만 선택할 수 있도록 설정
/**
* ADD, DELETE 버튼 클릭 시 실행되는 메소드
*/
Button btnAdd = (Button) findViewById(R.id.btnAdd);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText ed = (EditText) findViewById(R.id.newitem);
String text = ed.getText().toString(); // EditText에 입력된 문자열값을 얻기
if (!text.isEmpty()) { // 입력된 text 문자열이 비어있지 않으면
items.add(text); // items 리스트에 입력된 문자열 추가
ed.setText(""); // EditText 입력란 초기화
adapter.notifyDataSetChanged(); // 리스트 목록 갱신
}
}
});
Button btnDelete = (Button) findViewById(R.id.btnDelete);
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int pos = listView.getCheckedItemPosition(); // 현재 선택된 항목의 첨자(위치값) 얻기
if (pos != ListView.INVALID_POSITION) { // 선택된 항목이 있으면
items.remove(pos); // items 리스트에서 해당 위치의 요소 제거
listView.clearChoices(); // 선택 해제
adapter.notifyDataSetChanged();
// 어답터와 연결된 원본데이터의 값이 변경된을 알려 리스트뷰 목록 갱신
}
}
});
}
}
보면 adpater 가 사용된다.
listview 는 단순히 목록만 보여줄 수 있기 때문에
어텁터를 사용하여 기능을 구현한다.
더보기
이건 시간이나서 따로 정리하면 글을 수정하여 여기에 링크를 달겠다.
추가로 xml은
더보기
<?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"
tools:context=".AddNewList">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="페이지 제목"
android:textSize="40dp"
android:id="@+id/content"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="소분류를 추가 하세요"
android:textSize="20dp"
android:id="@+id/content2"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/newitem"
android:focusable="true"
android:focusableInTouchMode="true"
/>
<Button
android:text="추가"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:id="@+id/btnAdd"
/>
<Button
android:text="삭제"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:id="@+id/btnDelete"
/>
</LinearLayout>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1" />
</LinearLayout>
**내가 쓴 방식은 리스트에서 1개만 값을받고 1개의 리스트만 추가하는것인데
제목, 본문 이렇게 2개의 값을 받아 2개씩 추가하는것도있다.
더 나아가 사진도 같이 받을 수 있다는 점!!
'안드로이드 스튜디오' 카테고리의 다른 글
[안드로이드 스튜디오] Intent 를 이용한 다른페이지 이동 / 페이지 이동시 앱이 튕길때 / 새로운 페이지 java와 xml 연동 (0) | 2023.08.30 |
---|---|
[안드로이드 스튜디오] 원하는 부분만 스크롤 기능 주기 ScrollView (0) | 2023.08.30 |
[안드로이드 스튜디오] 다른 페이지에서 가져온 값으로 SeekBar 만들기, 다중 SeekBar 총합, progress , 커스텀 (0) | 2023.08.30 |
[안드로이드 스튜디오] GCS 앱 만들기 - 전체소스 (0) | 2023.08.30 |