PlayNewsStandDemo
PlayNewsStandDemo copied to clipboard
working with both scrollview you created and listview/Recycleview
Hello , I have followed your step and it works for me .But For my project I need to work with both screllview and list for different tab . SO I cook my code with your project and https://github.com/kmshack/Android-ParallaxHeaderViewPager and this one . but your scroll view works with scroll and parallax perfectly but my listview is not giving the parallax effect . here are some major changes in my code . please suggest me what should I do to get both listview and scrollview up and running
public class PagerAdapter extends FragmentPagerAdapter implements PagerSlidingTabStrip.IconTabProvider{
private SparseArrayCompat<ScrollTabHolder> mScrollTabHolders;
private SparseArrayCompat<ScrollTabRecycleView> mScrollTabHoldersRecycle;
..........
public PagerAdapter(FragmentManager fm) {
super(fm);
mScrollTabHolders = new SparseArrayCompat<ScrollTabHolder>();
mScrollTabHoldersRecycle = new SparseArrayCompat<ScrollTabRecycleView>();
}
public Fragment getItem(int position) {
ScrollTabHolderFragment fragment;
switch(position){
case 0:
fragment = (ScrollTabHolderFragment) ScrollViewFragment.newInstance(position);
mScrollTabHolders.put(position, fragment);
if (mListener != null) {
fragment.setScrollTabHolder(mListener);
}
return fragment;
case 1:
fragment = (ScrollTabHolderFragment) ScrollViewFragment.newInstance(position);
mScrollTabHolders.put(position, fragment);
if (mListener != null) {
fragment.setScrollTabHolder(mListener);
}
return fragment;
case 2:
ScrollTabHolderFragmentRecycleView fragmentone = (ScrollTabHolderFragmentRecycleView) TriprontoHomeFragment.newInstance(position);
mScrollTabHoldersRecycle.put(position, fragmentone);
if (mListener != null) {
fragmentone.setScrollTabHolder(mListenerRecycle);
}
return fragmentone;
......................................
......................................
public SparseArrayCompat<ScrollTabHolder> getScrollTabHolders() {
return mScrollTabHolders;
}
public SparseArrayCompat<ScrollTabRecycleView> getScrollTabHoldersTwo(){
return mScrollTabHoldersRecycle;
}
now according to ScrollTabHolderFragment
and ScrollTabHolder
I have created two classes as follows
public abstract class ScrollTabHolderFragmentRecycleView extends Fragment implements ScrollTabRecycleView{
protected ScrollTabRecycleView mScrollTabHolder;
public void setScrollTabHolder(ScrollTabRecycleView scrollTabHolder) {
mScrollTabHolder = scrollTabHolder;
}
}
public interface ScrollTabRecycleView {
void adjustScroll(int scrollHeight);
void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount, int pagePosition);
}
and my ListFragment
class I added this code but got no effect on scroll over the header view
public class TriprontoHomeFragment extends ScrollTabHolderFragmentRecycleView {
public static final String TAG = TriprontoHomeFragment.class.getSimpleName();
private static final String ARG_POSITION = "position";
private ListView mListView;
private InterestAdapter mAdapter;
private int mPosition;
private View rootView;
public static Fragment newInstance(int position) {
TriprontoHomeFragment f = new TriprontoHomeFragment();
Log.d(TAG, "fragment called successfully");
Bundle b = new Bundle();
b.putInt(ARG_POSITION, position);
f.setArguments(b);
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPosition = getArguments().getInt(ARG_POSITION);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.home_tripronto, container, false);
mListView = (ListView) rootView.findViewById(R.id.listview);
View placeHolderView = inflater.inflate(R.layout.view_header_placeholder, mListView, false);
placeHolderView.setBackgroundColor(0xFFFFFFFF);
mListView.addHeaderView(placeHolderView);
return rootView;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mListView.setOnScrollListener(new OnScroll());
mAdapter = new InterestAdapter(InterestManager.getInstance().getCountries(), R.layout.home_row_items, getActivity());
mListView.setAdapter(mAdapter);
if(MainActivity.NEEDS_PROXY){//in my moto phone(android 2.1),setOnScrollListener do not work well
mListView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (mScrollTabHolder != null)
mScrollTabHolder.onScroll(mListView, 0, 0, 0, mPosition);
return false;
}
});
}
}
@Override
public void adjustScroll(int scrollHeight) {
if (scrollHeight == 0 && mListView.getFirstVisiblePosition() >= 1) {
return;
}
mListView.setSelectionFromTop(1, scrollHeight);
}
public class OnScroll implements AbsListView.OnScrollListener {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (mScrollTabHolder != null)
mScrollTabHolder.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount, mPosition);
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount, int pagePosition) {
}
}