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 |