2015년 7월 20일 월요일

[android] listview 구현하기

<main.xml>
android:divider -> 리스트의 셀사이의 선색
android:dividerHeight -> 리스트의 셀사이 선 두께
1
2
3
4
5
6
7
<ListView
     android:id="@+id/list"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:divider="#ff0000"
     android:dividerHeight="1dp" >
</ListView>
cs


<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
ArrayList<String> m_arr;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        m_arr = new ArrayList<String>();
        m_arr.add("김수현");
        m_arr.add("송중기");
        m_arr.add("비스트");
        
        ArrayAdapter<String> m_Adapter  = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, m_arr);
        ListView m_list = (ListView)findViewById(R.id.list);
        m_list.setOnItemClickListener(mItemClickListener);
        m_list.setAdapter(m_Adapter);
    }
    
    AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position , long id)
        {    
            Toast.makeText(MainActivity.this, m_arr.get(position), Toast.LENGTH_SHORT).show();
        }
    };
cs


고정적인 문자열일 경우 ArrayList대신 사용가능한 방법.

* 단순배열로 가능.
   String[] str = {"이기광","윤두준","양요섭", "용준형"};

* 리소스에 정의한 후 읽어오는 방법.(고정적인 문자열이라면 추천)
   1. values/array.xml 파일 생성(File > New > Other > Android XML Values File)
   2. Add... > String Array > OK > Name지정





















 3. Add... > Item > OK > Value값 입력
 4. Item을 모두 추가한후 arrays.xml을 확인해보면 다음과 같이 생성.
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="name">
        <item >이기광</item>
        <item >윤두준</item>
        <item >용준형</item>
        <item />
    </string-array>
</resources>
cs

5. MainActivity.java에서 createFromResource를 사용하여
1
 ArrayAdapter<CharSequence> m_Adapter = ArrayAdapter.createFromResource(this, R.array.name, android.R.layout.simple_list_item_1);
cs




2015년 7월 19일 일요일

[android] login dialog popup 구현 / Activity를 dialog로 만들기 / custom dialog

login dialog (custom dialog) 만들기
















Activity를 dialog로 보이기.

Manifest에서 android:theme="@android:style/Theme.Holo.Light.Dialog"
1
2
<activity android:name=".ActivityDialog"
    android:theme="@android:style/Theme.Holo.Light.Dialog"></activity>
cs

login dialog 만드는 자세한 소스는 추후 추가.

[android] 이클립스 줄 넘버, 줄 번호 (eclipse line number)

사진과 같이 eclipse에서 왼쪽 줄번호 나타내는 방법.






















Window > Preferences > General > Editors > Text Editors > Show line numbers 체크


2015년 7월 17일 금요일

[android] list dialog 구현하기

리스트 형태의 dialog를 구현하는 방법.

















1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CharSequence info[] = new CharSequence[] {"내정보""로그아웃" };
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("제목");
        builder.setItems(info, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                switch(which)
                {
                case 0:
                    // 내정보
                    Toast.makeText(MainActivity.this"내정보", Toast.LENGTH_SHORT).show();
                    break;
                case 1:
                    // 로그아웃
                    Toast.makeText(MainActivity.this"로그아웃", Toast.LENGTH_SHORT).show();
                    break;
                }
                dialog.dismiss();
            }
        });
        builder.show();
cs

[android] startActivity와 startActivityForResult의 차이점

public void startActivity (Intent intent)

startActivity(new Intent(MainActivity.this, secondActivity.class));

startActivity는 액티비티를 호출하는 함수. 일방형
다음 액티비티로 필요한 값을 전달해줄 수 있지만 다시 값을 전달 받을 수는 없다.

public void startActivityForResult (Intent intent, int requestCode)


Intent intent = new Intent(MainActivity.this, secondActivity.class);

intent.putExtra("test", data);
startActivityForResult(intent, 10);

startActivityForResult도 액티비티를 호출하는 함수. 쌍방형
값을 전달하고 또 전달 받을 수 있다.
위처럼 MainActivity -> secondActivity로 이동후 다시 secondActivity -> MainActivity로 이동할 때 setResult를 사용한다.

public final void setResult (int resultCode, Intent data)


Intent intent = new Intent();
intent.putExtra("test", data);
setResult(RESULT_OK, intent);
finish();

secondActivity에서 다음과 같이 사용하여 data를 넘기면 MainActivity의 onActivityResult함수에서 데이터 값을 받아서 사용 할 수 있다.









protected void onActivityResult (int requestCode, int resultCode, Intent data)

requestCode : MainActivity에서 secondActivity를 호출할 때 보낸 값-> 10
resultCode : setResult에서 보낸 값 -> 1
data : setResult에서 보낸 data값











[android] 액션 버튼 아이콘 변경 (Action item icon)


invalidateOptionsMenu(); 를 사용하여 onPrepareOptionsMenu함수를 호출 할 수 있다는 점을 이용.

bchange의 여부에 따라서 아이콘을 변경할 수 있다.


1
2
3
4
5
6
7
8
9
10
11
12
@Override
    public void onPrepareOptionsMenu(Menu menu) {
        if(bchange)
        {
            menu.findItem(R.id.menu_test).setIcon(R.drawable.btngrid);
        }
        else
        {
            menu.findItem(R.id.menu_test).setIcon(R.drawable.btnlist);
        }
        super.onPrepareOptionsMenu(menu);
    }
cs