본문 바로가기

노트필기

[Android] 4th Class

2017.06.12

4th Class


* 채팅어플 밑에서 부터 글자 올라가기

- ListView - properities에서 stackFromBottom 체크 하고  transcriptMode에 'alwaysScroll'하기


* List보다 map이 찾는 속도가 더 높다. 즉 map이 더 강력한 도구가 될 수 있다.


* <?> : 어떤 클래스가 와도 다 받아주겠다는 뜻임


* Hashmap은 주로 switch문 대신에 많이 사용한다.


* 컴파일 오류가 자주 날때 Bulid에 Clean Project 해주면 좋다.


<ListActivty>


package com.oneplus.admin9.class0608_park;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.Collections;

public class ListActivity extends AppCompatActivity {

ListView lv;
EditText edt;
ArrayList<String> listItem;
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);

listItem = new ArrayList<>();
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, listItem);

lv = (ListView) findViewById(R.id.lvMessage);
lv.setAdapter(adapter);

// listItem.add("홍길동 : 안녕");
// listItem.add("졸려");



findViewById(R.id.btnSend).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edt = (EditText) findViewById(R.id.etMsg);

String input = edt.getText().toString();
listItem.add(input);
edt.setText("");
// Collections.reverse(listItem);
//
adapter.notifyDataSetChanged();

}
});

}
}


<HomeActivty>

package com.oneplus.admin9.class0608_park;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

public class HomeActivity extends AppCompatActivity {

Map<String, Class<?>> menuActs = new LinkedHashMap<>(); //<?> : 어떤 클래스가 와도 다 받아주겠다는 뜻임/ Hashmap은 주로 switch문 대신에 많이 사용한다./다형성 때문에 뒷쪽만 Linked로 해주면 된다.
ListView lv;

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

menuActs.put("Main", MainActivity.class);
menuActs.put("JavaCode UI", JavaLayoutActivity.class);
menuActs.put("GridLayout", GridLayoutActivity.class);
menuActs.put("ListView", ListActivity.class);
menuActs.put("BasicActivity", BasicActivity.class);

ArrayList<String> arData = new ArrayList<>();
for (String key : menuActs.keySet()) arData.add(key);


// arData.add("main");
// arData.add("JavaCode UI");
// arData.add("GridLayout");

ArrayAdapter aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arData);

lv = (ListView) findViewById(R.id.lvHomeMenu);
lv.setAdapter(aa);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Toast.makeText(getApplicationContext(), position + " " + id, Toast.LENGTH_SHORT).show();

lv.getItemAtPosition(position);
String item = (String) lv.getItemAtPosition(position);
startActivity(new Intent(HomeActivity.this, menuActs.get(item)));
//이대로 하면 순서대로 나오지 않는다. 그래서 LinkedHashmap을 이용한다.



// Intent i;
// switch (position) {
// case 0 :
// i = new Intent(HomeActivity.this, MainActivity.class);
// startActivity(i);
// break;
// case 1 :
// i = new Intent(HomeActivity.this, JavaLayoutActivity.class);
// startActivity(i);
// break;
// case 2 :
// i = new Intent(HomeActivity.this, GridLayoutActivity.class);
// startActivity(i);
// break;
// default:
// break;
// }
}
});
}
}


<Basic>


package com.oneplus.admin9.class0608_park;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class BasicActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_basic2);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Instant Run is Amazing!", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});

Button btn = (Button) findViewById(R.id.btnPress);
final TextView tv = (TextView) findViewById(R.id.tvStatus);

btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tv.setText("Button Clicked");
}
});

btn.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
tv.setText("Long Button Clicked");
return true;
//다른 녀석에게 값을 넘겨줘서 같이 작동할 것인지 아닌지 때문에 리턴값이 있다. false면 넘겨준다. true면 여기서 멈춘다.
// false 일때는 값이 넘어가서 버튼에 손을 뗀 순간 onClickListenser에 값이 넘어가서
//그 값이 뜬다. true 일때는 그렇지 않다.
}
});
}

}




'노트필기' 카테고리의 다른 글

[Do it 안드로이드] Parcelable 예제  (0) 2017.06.18
[Android] 5th Class  (0) 2017.06.13
[Android] 3rd Class  (0) 2017.06.09
[Android] 2nd Class  (0) 2017.06.08
[Android] 1st.Class  (0) 2017.06.07