마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

리스트뷰에서 버튼을 눌렀을때, 오른쪽에 나타나게 하고싶어요.

0 추천

 

안녕하세요.

리스트뷰 관련해서 모르는 부분이 있어서 글을 올렸습니다.

제가 현재 리스트뷰를 통해 아래의 사진과 같이 각각의 버튼들의 구조를 만들었습니다.

그런데 이 부분에서 첫번째 아이템을 눌렀을때 2번째 사진처럼, 오른쪽에 강남, 동대문.. 등등의 리스트가

세로로 쭉 나와야 하고, 두번째 아이템인 경기를 눌렀을 경우에는 오른쪽에, 김포와 남양주 등등..의 리스트가

세로로 쭉  나와야 합니다.

제가 만든 구조는 리스트뷰 구조로 만들었었고, 각 버튼을 눌렀을때 오른쪽에 어떻게 지역이 나오는 구조로

만들어야 할지 잘 모르겠습니다. 처음에는, 양쪽을 다 리스트 뷰로 만든다음에 가중치를 1씩 줘서

만들기는 했지만.. 그렇게 되면 소스도 중복될뿐더러 이렇게 만드는게 아닌것 같아서 내리

구상해보다가 소스를 고쳐보고 하다하다 지쳐서 글을 올려 봅니다 ㅠ

어떻게 해야, 각 리스트뷰의 이벤트를 통해서, 우측에 지역들이 나오게 할수 있을까요?

 

++) 그리고 더해서, 현재 제가 아래와 같이 만들었을떄, 텍스트부분이 하얀색으로 나옵니다.

그래서 마지못해서 배경을 아래와 같이 약간 하늘색으로 주었는데, 텍스트를 검은색으로

나오게 하려면 어떻게 해야할까요?

소스를 아래에 한번 첨부해 보겠습니다. 8000자가 넘는 부분은 댓글에 이어서 달아보았습니다.

 

 

 

<xml>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_location"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/Location_Layout"
        android:orientation="horizontal">

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="지역별" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="특별관" />

    </LinearLayout>

공산당 (1,960 포인트) 님이 2016년 11월 5일 질문
공산당님이 2016년 11월 5일 수정
<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="horizontal">

        <ListView
            android:id="@+id/listview"
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#00fff2">

        </ListView>


    </LinearLayout>

</LinearLayout>

<자바 코드>

package ex.real_project;

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.ImageView;
import android.widget.ListView;
import android.widget.TabHost;
import android.widget.Toast;

public class Location extends AppCompatActivity {

    ImageView Before_Activity;

    private ListView m_ListView;
    private ArrayAdapter<String> m_Adapter;

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

        m_Adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1);

        m_ListView = (ListView) findViewById(R.id.listview);

        m_ListView.setAdapter(m_Adapter);

      
        m_ListView.setOnItemClickListener(onClickListItem);

        m_Adapter.add("서울");
        m_Adapter.add("경기");
        m_Adapter.add("인천");
        m_Adapter.add("대전/충청/세종");
        m_Adapter.add("부산/대구/경상");
        m_Adapter.add("광주/전라");
        m_Adapter.add("강원");


        Before_Activity = (ImageView) findViewById(R.id.Location_Date_and_Seat_Image);
        Before_Activity.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });

    }


    private AdapterView.OnItemClickListener onClickListItem = new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            // 이벤트 발생 시 해당 아이템 위치의 텍스트를 출력
            Toast.makeText(getApplicationContext(), m_Adapter.getItem(arg2), Toast.LENGTH_SHORT).show();
        }
    };

}

1개의 답변

0 추천
 
채택된 답변
안녕하세요~
저번에 리스트뷰구성으로 질문올리셨던분 같네용
일단 베이스아답터를 이용해서 커스텀하시는데 제일 나아보여요
물론 어레이로도 간단하게 가능해보이지만 베이스아답터로 직접 만들어보시는게 제일 경험에 좋다고 생각되네여..
방랑자 님이 2016년 11월 5일 답변
공산당님이 2016년 11월 5일 채택됨
네 저번에 질문 올렸던 사람 맞습니다.
흐억 ㅠ 제가 많이 부족해서 말씀하신걸 이해하기가 너무 힘듭니다 ㅠ
어떻게 받아들여야 할지 잘 모르겠어요 ㅠ .. 오른쪽도 리스트뷰로 만들라는
말씀이 아니신거같은데 어떻게 해야할지 .. 구체적으로 한번만 말씀해주실수
있을까요 ...

참고로 제가 만드는 방법은 아래의 블로그를 통해서 만들고 있습니다.
http://berabue.blogspot.kr/2014/05/android-listview.html
일단 따라하실거면 베이스아답터로 커스텀한 부분도 다 따라하시는게 좋지 않을까요?
사람마다 다 다르지만 저는

커스텀아답터.class
데이터.class
메인.class

세개를 만들어서 사용하는데 이게 저는 제일 보기도 편하고 변경시에도 좋다고 생각되더라고요. 물론 사람마다 다른거니.

기한이 있는건지 너무 급하게 완성하시려는 느낌을 많이 받네용.

리스트뷰를 완벽하게 익히면 위 구조가 이해되실거라고 생각해요.

전 아래 링크가 괜찮다고 생각되서 링크 남깁니다.

커스텀리스트뷰를 5번정도 만들어보시면 원하시는걸 만들수 있으시라고 생각해요.

물론 만들고자 하시는 위 구조도 바로 생각이 나실거구요.

만들고 정렬, 클릭이벤트, 데이터 추가, 삭제를 해보시면 될것같습니다.

정말 급하신 거라면 간단한 이유라도 말씀해주세요. 코드로 만들어서 드릴게요

http://kitesoft.tistory.com/72
답변 감사드립니다.. 말씀하신것처럼, 아무래도 좀 급한 이유도 있고..
이런 저런 이유로 글을 많이 남기는것 같네요. 방랑자님과 이야기좀 해보고싶은데 아이디를 클릭해봐도 따로 쪽지를 보내거나, 할수있는 방법이 없네요 ..

말씀하시기를, 베이스어댑터로 커스텀한 부분도 따라하는게 좋지않냐고
말씀을 하셨는데, 제가 현재 아래의 블로그에서 2번까지 진행을 한 상태입니다.
그런데 방랑자님 말씀으로는, 5번까지 진행을 해보시라는 뜻으로 제가 이해를
했는데,  이게 맞나요?

http://berabue.blogspot.kr/2014/05/android-listview.html
넹넹 5번까지요
여기로 쪽지주셔용~~
네 쪽지 보냈습니다. 네 쪽지 보냈습니다..
방랑자님, 블로그에 나온대로 그대로 따라하던 도중에 모르는 부분이 있습니다.
3번 같은 경우에는 그냥 xml 파일 부분이니까 xml파일만 만들고, 4번같은 경우에는 CustomAdapter이라는 자바 클래스를 따로 만들어야 하는건가요?

2번까지는 완성을 다 했고 5번같은 경우에는 3,4번이 해결이 된 뒤에, 제가 현재 사용하고 있는 Location.java파일에 적어볼까 합니다.
대화니님, 블로그에 나온대로 그대로 따라하던 도중에 모르는 부분이 있습니다.
3번 같은 경우에는 그냥 xml 파일 부분이니까 xml파일만 만들고, 4번같은 경우에는 CustomAdapter이라는 자바 클래스를 따로 만들어야 하는건가요?

2번까지는 완성을 다 했고 5번같은 경우에는 3,4번이 해결이 된 뒤에, 제가 현재 사용하고 있는 Location.java파일에 적어볼까 합니다.
Xml은 본인이 원하시는대로 하면 되는거라서용...
일단 새로운 프로젝트로 하나 만들어서 한번 해보는게 제일 좋다고 생각되여~~~
쪽지답장했으니 확인해주세용~~~
...