이 소스를 좀 더 간결하게하기 위해서
자바클래스에서 spinner 부분하고 listview 부분을 덜어내고 싶은데
어떻게 클래스를 나눠야할지 아직 감이 안옵니다.
힌트 좀 부탁드립니다~
(나름대로 나눴는데 에러만 생기더군요..)
menu_view.xml
<ImageButton
android:id="@+id/menuBtn"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:background="#00000000"
android:src="@drawable/menubutton" />
<RelativeLayout
android:id="@+id/slidingPage01"
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="#ffffff"
android:visibility="gone" >
<Spinner
android:id="@+id/menuSpin"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</Spinner>
<ListView
android:id="@+id/menuList"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_below="@id/menuSpin"
android:textColor="#ffff0000" >
</ListView>
</RelativeLayout>
</RelativeLayout>
menuView.java
package com.example;
import java.util.ArrayList;
import java.util.Arrays;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.Toast;
public class MenuView extends RelativeLayout implements OnClickListener, AnimationListener{
Context mContext;
ImageButton menuBtn;
boolean isPageOpen = false;
Animation translateLeftAnim;
Animation translateRightAnim;
RelativeLayout menuPage;
MenuOfSpinnerView spinnerView;
MenuOfListView listView;
Spinner newsSpinner;
ArrayAdapter<String> adapterForSpinner; // 스피너용 어뎁터
String[] press = { "A", "B", "C" }; // 스피에 들어갈 언론사들
ListView subjectList;
ArrayAdapter<String> adapterForList; // 리스트용 어뎁터
ArrayList<String> arrayList; // 리스트뷰에 들어갈 주제들
public MenuView(Context context) {
super(context);
init(context);
}
public MenuView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public void init(Context context) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.menu_view, this, true);
mContext = context;
menuBtn = (ImageButton) findViewById(R.id.menuBtn);
menuBtn.setOnClickListener(this);
translateLeftAnim = AnimationUtils.loadAnimation(mContext, R.anim.translate_left);
translateRightAnim = AnimationUtils.loadAnimation(mContext, R.anim.translate_right);
translateLeftAnim.setAnimationListener(this);
translateRightAnim.setAnimationListener(this);
menuPage = (RelativeLayout) findViewById(R.id.slidingPage01);
newsSpinner = (Spinner) findViewById(R.id.menuSpin);
adapterForSpinner = new ArrayAdapter<String>(mContext, android.R.layout.simple_spinner_item, press);
newsSpinner.setAdapter(adapterForSpinner);
adapterForSpinner.setDropDownViewResource(android.R.layout.simple_spinner_item);
newsSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
String str = (String) adapterForSpinner.getItem(arg2);
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});
//요 두부분을 각각의 클래스로 분리시키고 싶습니다.
subjectList = (ListView) findViewById(R.id.menuList);
arrayList = new ArrayList<String>(Arrays.asList("aa", "bb", "cc","dd", "ee", "ff", "gg", "hh", "ii"));
adapterForList = new ArrayAdapter<String>(mContext, android.R.layout.simple_list_item_1, arrayList);
subjectList.setAdapter(adapterForList);
subjectList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
subjectList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
String str = (String) adapterForList.getItem(arg2);
if (str.equals("aa")) {
} else if (str.equals("bb")) {
} else if (str.equals("cc")) {
} else {
Toast.makeText(mContext,
"Selected : " + str, 2000).show();
}
}
});
}//END init()
public void onClick(View view) {
switch(view.getId()){
case R.id.menuBtn:
if (isPageOpen) {
menuPage.startAnimation(translateLeftAnim);
} else {
menuPage.setVisibility(View.VISIBLE);
menuPage.startAnimation(translateRightAnim);
}
break;
}//END switch()
}//End onClick()
public void onAnimationEnd(Animation animation) {
if (isPageOpen) {
menuPage.setVisibility(View.INVISIBLE);
isPageOpen = false;
} else {
isPageOpen = true;
}
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationStart(Animation animation) {
}
}//END CLASS MenuView