'listview spinner'에 해당되는 글 1건

  1. 2013.01.29 Android - 리스트뷰에 스피너 형태 달기 (ListView Spinner) (6)

Android - 리스트뷰에 스피너 형태 달기 (ListView Spinner)

Android 2013.01.29 00:26

안녕하세요 오늘만 두번째 글이네요.

아니 하루가 지났으니 오늘 첫번째 글이 되는건가요.

 

어떤분이 리스트뷰에 스피너처럼 뛰울 수는 없는가 해서 제가 한번 해보았습니다.

리스트뷰에 동적으로 스피너를 구현해보았지만 모습이 영.........아니더라구요 ㅎ

그래서 생각한방법이 다이얼로그를 스피너형태처럼 뛰우는 형식을 썼습니다.

 

 

오랜만에 이리저리 소스만지다보니 헤매다가 예전 자료 찾아서 쓱싹 해치웠네요 ㅎ

그 분에게 도움이 될지는 모르겠지만 제가 한 방법을 소개하겠습니다.

 

 

현재 리스트뷰 구현 방법은 전 글을 찾아보시면 쉽게 해보실 수 있구요.

그 구현 소스에 간단히 다이얼로그 생성 소스만 갖다 붙힌 걸로 쉽게 구현할 수 있었습니다.

다이얼로그를 따로 메소드를 만들어서 하시는 분들도 있지만 저는 리스트뷰 클릭 동시에 다이얼로그를 생성하는 방식으로 구현했습니다.

 

 

방법은 아래와 같습니다.

 

먼저 각 행에 뿌려줄 문자값을 배열로 지정합니다.

String[] Example = new String[]{"깡통" ,"중옵" ,"풀옵"};
  
다이얼로그객체생성
 new AlertDialog.Builder(this)

 

타이틀은 없애구요
.setTitle("")
 

아이템에 넣어줄 것은 뿌려줄 문자값과 클릭 시 이벤트 처리입니다.

.setItems(Example, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
이 부분에 int 값으로 이벤트처리 하시면 됩니다 !

     }
})

 

버튼은 당연히 스피너인데 없어야겠지요.
 .setNegativeButton("", null)
.show();

 

 

이 구문을 추가함으로써 리스트뷰를 클릭 시 스피너 형태처럼 구현할 수 있도록 하였습니다.

다이얼로그 생성 구문을 알아두면 어디든 써먹을 수 있다는 장점이 있습니다. 여러분도 메모장 같은 곳에 적어두고 잘 써먹으시길 바라겠습니다.

이제 소스와 실행화면으로 맞치겠습니다.

필요한 설명은 주석으로 달아놓았습니다. 그 외의 질문은 댓글로 !!!!

 

 

프로젝트 생성

 

프로젝트명 : com.jsh.examlistspiner

클래스파일 : ListviewSpiner

XML파일 : main.xml

타겟 : 2.2 ~ 4.2

 

 

 

ListviewSpinner.java

 

ListviewSpiner.txt

 

package com.example.com.jsh.examlistspiner;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.view.View;

//OnItemClickListener 인터페이스 상속
public class ListviewSpinner extends Activity implements OnItemClickListener {

// 리스트뷰에 보여질 문자열 배열로 할당
String[] age = new String[] { "아방", "슴삼", "아써", "크삼" };

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// 리소스 파일에 정의된 id_list 라는 ID 의 리스트뷰를 얻는다.
ListView list = (ListView) findViewById(R.id.listView1);

// ArrayAdapter 객체를 생성한다.
ArrayAdapter<String> adapter;

// 리스트뷰가 보여질 아이템 리소스와 문자열 정보를 저장한다
// 객체명 = new ArrayAdapter<데이터형>(참조할메소드, 보여질아이템리소스, 보여질문자열);
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, age);

/*
*
* 안드로이드에서 제공하는 기본적인 리스트뷰 아이템 리소스
*
* simple_list_item_1 simple_list_item_2 simple_list_item_activated_1
* simple_list_item_activated_2 simple_list_item_checked
* simple_list_item_multiple_choice simple_list_item_single_choice
* simple_selectable_list_item
*/


// 리스트뷰에 ArrayAdapter 객체를 설정하여 리스트뷰에 데이터와 출력 형태를 지정한다.
list.setAdapter(adapter);

// 리스트뷰 선택 시 이벤트를 설정한다.
list.setOnItemClickListener(this);
}

// 리스트뷰 선택 시 이벤트 처리 메소드
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
// arg1는 현재 리스트에 뿌려지고 있는 정보
// arg2는 현재 리스트에 뿌려지고 있는 해당 id 값

// 다이얼로그에 보여질 내용
String[] Example = new String[] { "깡통", "중옵", "풀옵" };

// 다이얼로그 생성
new AlertDialog.Builder(this).setTitle("")
.setItems(Example, new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub

// int 값으로 switch문으로 분기 치면 됩니다.

}
}).setNegativeButton("", null).show();

}

}

 

 

main.xml

 

main.txt

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/layout"
    tools:context=".ListviewSpiner" >

    <ListView
        android:id="@+id/listView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
       >
    </ListView>

</RelativeLayout>

 

 

 

실행화면

 

 

 

 

 

 

 

이런식으로 리스트뷰 클릭 시

스피너 형태로 구현되도록 하였습니다.

 

많이 찾아주세요.

 

 

 

 

저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comments 6
  1. ssima 2013.01.29 09:09 신고 Modify/Delete Reply

    잘 보고가요! 덕분에 많은 도움이 되었습니다. 감사합니다. 정님!! -씨마 올림-

  2. wooruang 2013.02.18 22:50 신고 Modify/Delete Reply

    딱 필요했던 부분인데 잘보고 갑니다 감사함니다~^^

  3. 질문 2013.02.28 14:25 신고 Modify/Delete Reply

    처음 리스트 에서......깡통, 중옵, 풀옵 이 나올때....
    짧게 클릭인가요?? 길게 클릭인가요??
    혹시 짧게 클릭햇을때...... 다른 엑티비티(다른 화면) 으로 넘어가게 할 수 있나요??
    (예시 : 카톡의 설정화면에서 각 해당 아이템 클릭시 화면이동....)
    혹시..... 샘플 있으신가요?? 있으시면 메일로좀 부탁드립니다.
    test000@hanmail.net 로 부탁드립니다......

    • 정승현 2013.02.28 21:15 신고 Modify/Delete

      현재 보시는 소스에서 inItemClick 메소드에서 int arg1 부분의 arg1을 통해서 분기쳐서 다른 액티비티로 넘기시면 됩니다.

Write a comment