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

제가 리스트뷰를 동적으로 할당하려고 합니다.

0 추천

현재 XML파일을 어찌어찌해서 동적으로 할당하게 만들었습니다.

동적으로 할당한 리스너들의 버튼 이벤트는 어떻게 만드는지 알려주실수 있습니까?

package com.testdynamic;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.BaseAdapter;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends Activity {


    Button CreateBtn, DeleteBtn, SaveBtn, BackBtn;
    EditText NameEditText;
    TextView NameText, SettingText;
    int a = 0;
    ArrayList<String> ArrayString;

    DataAdapter dataAdapter;
    private ListView listview; //리스트 뷰
    DataAdapter adapter; //데이터를 연결할 Adapter
    ListView mListView;
    //데이터를 담을 자료구조


    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ArrayString = new ArrayList<>();

        mListView = (ListView) findViewById(R.id.dynamiclist);
        CreateBtn = (Button) findViewById(R.id.CreateBtn);
        CreateBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // TODO Auto-generated method stub
                ArrayString.add("");
                dataAdapter.notifyDataSetChanged();
            }
        });
        SaveBtn = (Button) findViewById(R.id.SaveBtn);
        DeleteBtn = (Button) findViewById(R.id.DeleteBtn);
        DeleteBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // TODO Auto-generated method stub
                ArrayString.remove("");
                dataAdapter.notifyDataSetChanged();
            }
        });
        BackBtn = (Button) findViewById(R.id.BackBtn);

        dataAdapter = new DataAdapter(this);
        mListView.setAdapter(dataAdapter);


    }

    private class DataAdapter extends BaseAdapter {
        // 레이아웃 XML을 읽어들이기 위한 객체
        private LayoutInflater mInflater;
        private Context mContext = null;

        public DataAdapter(Context context) {
            // 상위 클래스의 초기화 과정
            // context, 0, 자료구조
            super();
            this.mContext = context;
            mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        @Override
        public int getCount() {
            return ArrayString.size();
        }

        @Override
        public Object getItem(int i) {
            return i;
        }

        @Override
        public long getItemId(int i) {
            return i;
        }


        // 자신이 만든 xml의 스타일로 보이기 위한 구문
        @Override
        public View getView(int position, View v, ViewGroup parent) {
            View view = null;

            // 현재 리스트의 하나의 항목에 보일 컨트롤 얻기
            if (v == null) {
                // XML 레이아웃을 직접 읽어서 리스트뷰에 넣음
                view = mInflater.inflate(R.layout.listview, null);
            } else {
                view = v;
            }
            TextView name = (TextView) view.findViewById(R.id.NameText);
            TextView Setting = (TextView) view.findViewById(R.id.SettingText);
            Button up = (Button) view.findViewById(R.id.UpBtn);
            Button down = (Button) view.findViewById(R.id.DownBtn);
            Button set = (Button) view.findViewById(R.id.SetBtn);
            EditText oneset = (EditText) view.findViewById(R.id.OneSet);

            return view;
        }
    }

    protected void onDestroy() {
        super.onDestroy();
    }

}

여기까지가 메인 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="left|center"
        android:orientation="horizontal">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1.2"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/NameText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="밝기"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1.2"
            android:orientation="horizontal">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <Button
                    android:id="@+id/UpBtn"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="▲" />

                <Button
                    android:id="@+id/DownBtn"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="▼" />
            </LinearLayout>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical">

            <TextView
                android:id="@+id/SettingText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="밝기 설정 : "
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/Light1Text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:orientation="vertical">

            <EditText
                android:id="@+id/OneSet"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="One Set" />

            <Button
                android:id="@+id/SetBtn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Set" />
        </LinearLayout>

    </LinearLayout>

</LinearLayout>

여기까지가 추가하려는 xml 입니다.

yeboykr (180 포인트) 님이 2015년 8월 20일 질문

1개의 답변

0 추천
어댑터 안에 홀더 객체를 만들고 리스너 다시면 됩니다
익명사용자 님이 2015년 8월 21일 답변
현재 한레이아웃에 버튼이 여러개인데
create 버튼을 누르면 그 버튼이 여러개 생기는데 그걸 각각  이벤트 할수 있어요?
...