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

ExpandableListView 내에 ScrollView 삽입 하는 방법?

0 추천

        

 

위와 같이 구현을 하고싶어서ExpandableListView 내에 ScrollView 를 삽입하려고 합니다.

그냥 쓸수는 없고 커스터마이징이 필요한것 같아서 http://yoo454.tistory.com/entry/ExpandableListView-%EC%98%88%EC%A0%9C-%EC%8A%A4%ED%84%B0%EB%94%94 의 예제를 활용해 구현하려고 했습니다.

하지만 아래와같이 ExpandableListView 내의 리스트가 스크롤을 갖지 않더라구요.. 

이렇게 ExpandableListView 하위의 리스트가 스크롤을 갖지 않았습니다.

이를 해결할 방법이 없을까요??

아니면 다른방법의 코딩으로 구현하려면 어떤 방식이 좋을까요?

 

이하는 제가 구현한 코드입니다.

-MainActivity

public class MainActivity extends Activity {

	private ArrayList<String> mGroupList = null;
	private ArrayList<ArrayList<String>> mChildList = null;
	private ArrayList<String> mChildListContent = null;
	private ExpandableListView mListView;

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

		setLayout();

		mGroupList = new ArrayList<String>();
		mChildList = new ArrayList<ArrayList<String>>();
		mChildListContent = new ArrayList<String>();

		mGroupList.add("가위");
		mGroupList.add("바위");
		mGroupList.add("보");

		mChildListContent.add("1");
		mChildListContent.add("2");
		mChildListContent.add("3");

		mChildList.add(mChildListContent);
		mChildList.add(mChildListContent);
		mChildList.add(mChildListContent);

		mListView.setAdapter(new BaseExpandableAdapter(this, mGroupList, mChildList));

		mListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
			@Override
			public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
				Toast.makeText(getApplicationContext(), "g click = " + groupPosition, Toast.LENGTH_SHORT).show();
				return false;
			}
		});

		mListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
			@Override
			public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
				Toast.makeText(getApplicationContext(), "c click = " + childPosition, Toast.LENGTH_SHORT).show();
				return false;
			}
		});

		mListView.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() {
			@Override
			public void onGroupCollapse(int groupPosition) {
				Toast.makeText(getApplicationContext(), "g Collapse = " + groupPosition, Toast.LENGTH_SHORT).show();
			}
		});

		mListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
			@Override
			public void onGroupExpand(int groupPosition) {
				Toast.makeText(getApplicationContext(), "g Expand = " + groupPosition, Toast.LENGTH_SHORT).show();
			}
		});

	}

	private void setLayout() {
		mListView = (ExpandableListView) findViewById(R.id.elv_list);
	}
}
public class BaseExpandableAdapter extends BaseExpandableListAdapter {

	private ArrayList<String> groupList = null;
	private ArrayList<ArrayList<String>> childList = null;
	private LayoutInflater inflater = null;
	private ViewHolder viewHolder = null;

	public BaseExpandableAdapter(Context c, ArrayList<String> groupList, ArrayList<ArrayList<String>> childList) {

		super();
		this.inflater = LayoutInflater.from(c);
		this.groupList = groupList;
		this.childList = childList;
	}

	@Override
	public String getGroup(int groupPosition) {
		return groupList.get(groupPosition);
	}

	@Override
	public int getGroupCount() {
		return groupList.size();
	}

	@Override
	public long getGroupId(int groupPosition) {
		return groupPosition;
	}

	@Override
	public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
		View v = convertView;

		if (v == null) {
			viewHolder = new ViewHolder();
			v = inflater.inflate(R.layout.list_p, parent, false);
			viewHolder.tv_p = (TextView) v.findViewById(R.id.tv_p);
			viewHolder.iv_p = (ImageView) v.findViewById(R.id.iv_p);
			v.setTag(viewHolder);
		} else {
			viewHolder = (ViewHolder) v.getTag();
		}

//		if (isExpanded) {
//			viewHolder.iv_image.setBackgroundColor(Color.GREEN);
//		} else {
//			viewHolder.iv_image.setBackgroundColor(Color.WHITE);
//		}

		viewHolder.tv_p.setText(getGroup(groupPosition));

		return v;
	}

	@Override
	public String getChild(int groupPosition, int childPosition) {
		return childList.get(groupPosition).get(childPosition);
	}

	@Override
	public int getChildrenCount(int groupPosition) {
		return childList.get(groupPosition).size();
	}

	@Override
	public long getChildId(int groupPosition, int childPosition) {
		return childPosition;
	}

	@Override
	public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
		View v = convertView;

		if (v == null) {
			viewHolder = new ViewHolder();
			v = inflater.inflate(R.layout.list_c, null);
			viewHolder.sv_c = (ScrollView) v.findViewById(R.id.sv_c);
			viewHolder.tv_c = (TextView) v.findViewById(R.id.tv_c);

			v.setTag(viewHolder);
		} else {
			viewHolder = (ViewHolder) v.getTag();
		}

		viewHolder.tv_c.setText(getChild(groupPosition, childPosition));

		return v;
	}

	@Override
	public boolean hasStableIds() {
		return true;
	}

	@Override
	public boolean isChildSelectable(int groupPostion, int childPosition) {
		return true;
	}

	class ViewHolder {
		public TextView tv_p;
		public TextView tv_c;
		public ImageView iv_p;
		public ImageView iv_c;
		public ScrollView sv_c;
	}
}

 

-activity_main

<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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.jambo2014.expandablelistviewstudy.app.MainActivity">
 
    <ExpandableListView
        android:id="@+id/elv_list"
        android:groupIndicator="@null"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
 
</RelativeLayout>

 

kmg123 (1,080 포인트) 님이 2014년 12월 30일 질문

1개의 답변

...