728x90
반응형
어뎁터 뷰 종류
어뎁터 뷰 생성 순서
1. ListView 만들기
2. ListView를 만들고 array adapter를 사용하기위해
Root element를 TextView로 설정한다
public class MainActivity extends AppCompatActivity {
// 리스트 뷰 안에 들어갈 데이터를 생성 -> 추가 삭제가 자유로운 ArrayList를 사용하여 생성
// ArrayList 하나 생성해서 우리 팀원들 이름 저장하기
ArrayList<String> team = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
team.add("장승원");
team.add("여진호");
team.add("김민관");
team.add("박양주");
team.add("김명훈");
}
}
3. arrayList로 데이터 정의하기
public class MainActivity extends AppCompatActivity {
// 리스트 뷰 안에 들어갈 데이터를 생성 -> 추가 삭제가 자유로운 ArrayList를 사용하여 생성
// ArrayList 하나 생성해서 우리 팀원들 이름 저장하기
ArrayList<String> team = new ArrayList<>();
ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = findViewById(R.id.listView);
team.add("장승원");
team.add("여진호");
team.add("김민관");
team.add("박양주");
team.add("김명훈");
// Adapter 생성
// Adapter 의 역할은 simpleList.xml (항목 디자인, 템플릿) 과 ArrayList(데이터)를 결합해서
// ListView 에 차곡차곡 쌓아주는 일을 함
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.simplelist, team);
//1.현재페이지 정보(context) , simplelist.xml(항목디자인,템플릿) -> R.layout 으로 접근 , 보여질 데이터
lv.setAdapter(adapter);
}
}
5.adapter생성해서 listView에 지정하기
textSize나 공백설정은 simplelist.xml에서해야함
( activity_main.xml은 layout만 제공해주는것 뿐임 )
btn_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 추가버튼 눌렀을 때 listView에 데이터 추가하기
String str = edt_input.getText().toString();
//데이터가 담겨있는 ArrayList에 추가하기
team.add(str);
// 데이터가 바뀌어서 adapter 를 새로고침
adapter.notifyDataSetChanged();
//EditText에 적힌 글자 날리기
edt_input.setText("");
}
});
추가할 텍스트 적고 추가버튼 누르면 list에 추가하기
Layout에서 transcriptMode를 alwayScroll로 설정해두면 추가할때마다 스크롤이 자동으로 올라간다
public class MainActivity extends AppCompatActivity {
// 리스트 뷰 안에 들어갈 데이터를 생성 -> 추가 삭제가 자유로운 ArrayList를 사용하여 생성
// ArrayList 하나 생성해서 우리 팀원들 이름 저장하기
ArrayList<String> team = new ArrayList<>();
ListView lv;
EditText edt_input;
Button btn_add;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = findViewById(R.id.listView);
edt_input = findViewById(R.id.edt_input);
btn_add = findViewById(R.id.btn_add);
team.add("장승원");
team.add("여진호");
team.add("김민관");
team.add("박양주");
team.add("김명훈");
// Adapter 생성
// Adapter 의 역할은 simpleList.xml (항목 디자인, 템플릿) 과 ArrayList(데이터)를 결합해서
// ListView 에 차곡차곡 쌓아주는 일을 함
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.simplelist, team);
//1.현재페이지 정보(context) , simplelist.xml(항목디자인,템플릿) -> R.layout 으로 접근 , 보여질 데이터
lv.setAdapter(adapter);
btn_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 추가버튼 눌렀을 때 listView에 데이터 추가하기
String str = edt_input.getText().toString();
//데이터가 담겨있는 ArrayList에 추가하기
team.add(str);
// 데이터가 바뀌어서 adapter 를 새로고침
adapter.notifyDataSetChanged();
//EditText에 적힌 글자 날리기
edt_input.setText("");
}
});
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// 지우기
// 다이얼로그 띄우기
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("삭제하기");
builder.setMessage("ㄹㅇ 삭제 할거??");
builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
team.remove(position); // 이벤트가 발생한 position 번호 쪽 삭제
adapter.notifyDataSetChanged(); // 새로고침
}
});
builder.setNegativeButton("cancle", null);
builder.show();
}
});
}
}
최종 코드
public class MainActivity extends AppCompatActivity {
Button btn_login, btn_write;
TextView tv_result;
ListView lv;
final int WRITE = 2; //상수는 변수와 구분짓기위해 대문자로 적기!
ArrayList<String> board = new ArrayList<>(); // ListView 에 띄울 데이터
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_write = findViewById(R.id.btn_write);
lv = findViewById(R.id.listView);
adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.simplelist, board);
btn_write.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(MainActivity.this, BoardActivity.class), WRITE);
lv.setAdapter(adapter);
// ▲ 한번만 쓸거라서 변수에저장하지 않고 한번에 작성
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == this.LOGIN){ //sub 갔다가 잘 왔는지?
if(resultCode == RESULT_OK){ //성공여부
btn_write.setEnabled(true);
}
}else if(requestCode == WRITE){
if(resultCode == RESULT_OK){
board.add(data.getStringExtra("msg"));
adapter.notifyDataSetChanged();
}
}
}
}
변수명 적용된 곳 한번에 바꾸기 단축키 (Eclipse)
Alt + Shift + R
로그인 할때만 btn_write.setEnalbed(true)하고
버튼 속성에서 enabled를 false로 해놓으면
로그인 하지않았을때에는 글 작성 하지 못하게 한다.
반응형
'Android' 카테고리의 다른 글
Custom ListView + DB연동하기 ( SQLite ) (0) | 2021.04.03 |
---|---|
Adapter -> Custom ListView활용 (0) | 2021.03.25 |
Intent 사용 2 (0) | 2021.03.23 |
Intent 사용하기 (0) | 2021.03.22 |
Constraint Layout + 주사위게임 만들기 (0) | 2021.03.21 |