안녕하세요. 


이번에 작업 중간에 구현해야 하는 부분이 필요한데 도저히 어떻게 해야 할지 모르겠네요.


리스트뷰 안의 아이템들을 스크롤 하는 이벤트를 코드로 줄 수 있나요?


예를 들면 1번 리스트뷰의 scroll로 인해 변하는 y값을 2번 리스트뷰에 넘겨서 scroll되게 하는,


지금은 dispatchTouchEvent로 한쪽으로는 해결했는데 양쪽 다 적용할 경우 touch event가 재귀적으로 일어나서 stackoverflow가 납니다.


scrollBy나 scrollTo를 사용하면 listView 자체를 scroll 시키기 때문에 안 되구요. listView 안의 item들을 스크롤 할 수 있어야 할 것

같은데 그 방법을 모르겠네요 ㅠㅠ


아래는 해당 소스 입니다. (간단한 예제성이라 xml은 없어도 될 듯하여 첨부하지 않았습니다.)


package com.ray.test;


import java.util.ArrayList;


import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnTouchListener;

import android.widget.AbsListView;

import android.widget.AbsListView.OnScrollListener;

import android.widget.ListView;


public class Test_List_ScrollViewActivity extends Activity {

boolean rightScrollFlag = false;

boolean leftScrollFlag = false;

int rightScrollY = 0;

int leftScrollY = 0;

ListView leftList;

ListView rightList;

Test_List_Adapter leftAdapter;

Test_List_Adapter rightAdapter;

Test_List_Items rightItems;

ArrayList<Test_List_Items> itemList;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        

        itemList = new ArrayList<Test_List_Items>();

        

        String[] temp = new String[15];

        for(int i=0; i<15; i++)

        {

        temp[i] = Integer.toString(i+1);

        }


        for(int i=0; i<15; i++)

        {        

       rightItems = new Test_List_Items(temp);

       itemList.add(rightItems);

        }

        

        leftList = (ListView)findViewById(R.id.left_list);

        leftAdapter = new Test_List_Adapter(this, R.layout.left_list_items, itemList);

        leftList.setAdapter(leftAdapter);

        

        rightList = (ListView)findViewById(R.id.right_list);

        rightAdapter = new Test_List_Adapter(this, R.layout.right_list_items, itemList);

        rightList.setAdapter(rightAdapter);

        

        

        leftList.setOnTouchListener(new OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

// TODO Auto-generated method stub

rightList.dispatchTouchEvent(event); // stackOverFlow

return false;

}

});

        

        

        

        rightList.setOnTouchListener(new OnTouchListener() {

       

        @Override

        public boolean onTouch(View v, MotionEvent event) {

        // TODO Auto-generated method stub

        leftList.dispatchTouchEvent(event); // stackOverFlow

        return false;

        }

        });

        

    }

}