右、
あなたがこれを分類したかどうかわからない、私はあなたが求めることをするだろうと私が思ういくつかのビットを一緒にすりつぶした。
水平スクローラーに読み込まれるアクティビティがあります。これは最善の方法ではないかもしれませんが、私にとってはうまくいきます。
HolderActivityクラス(HorizontalScrollViewクラスにロードされるクラス)私は持っています:
int selectedItem;
public boolean onLongClick(View v, int position) {
selectedItem = position;
openContextMenu(v);
return true;
}
public boolean onItemClick(int position) {)//do what you want here on click (press)
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
String[] menuItems = {"Menu item 1 text", "Cancel"};
for (int i = 0; i<menuItems.length; i++) {
menu.add(Menu.NONE, i, i, menuItemsRemove[i]);
}
menu.setHeaderTitle("My menu title");
}
あなたのHorizontalScrollViewクラスのコンストラクターパスで、私はその中のコンテキストを次のように渡します:
public MyScroller(Context context) {
super(context);
this.context = context;
}
次のように、setFeatureItemsという名前のArrayListからアイテムを作成するためのメソッドがあります。
public void setFeatureItems(ArrayList<MyListEntity> items){}
このメソッド内で、次のように各アイテムにコンテキストを渡すGestureDetectorを追加します。
mGestureDetector = new GestureDetector(context, new MyGestureDetector());
そして、すべての重要なparentActivityへの参照を持つMyGestureDetectorネストされたクラスは次のようになります。
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public void onLongPress(MotionEvent arg0) {
parentActivity.onLongClick(MyScroller.this, mActiveFeature);
};
@Override
public boolean onSingleTapUp(MotionEvent arg0) {
parentActivity.onItemClick(mActiveFeature);
return true;
};
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
try {
//right to left
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
int featureWidth = getMeasuredWidth();
mActiveFeature = (mActiveFeature < (mItems.size() - 1))? mActiveFeature + 1:mItems.size() -1;
smoothScrollTo(mActiveFeature*featureWidth, 0);
return true;
}
//left to right
else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
int featureWidth = getMeasuredWidth();
mActiveFeature = (mActiveFeature > 0)? mActiveFeature - 1:0;
smoothScrollTo(mActiveFeature*featureWidth, 0);
return true;
}
} catch (Exception e) {
Log.e("Fling", "There was an error processing the Fling event:" + e.getMessage());
}
return false;
}
}
私はこれを既存のプロジェクトから切り取ったので、十分に一般化していない残骸があるかもしれません。これが理にかなっているか、役立つことを願っています。さらに詳細を追加できるかどうか教えてください