有什么方法可以让我们ListView
一次只滚动一个项目。就像您向上滑动时一样,它只会向上滚动一项而不是正常滚动,类似向下滚动只有一项向下移动。
请帮忙!
这是我的代码:
public class ListViewTestExample extends Activity {
ListView listView;
private GestureDetectorCompat mDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_list_view_test);
mDetector = new GestureDetectorCompat(this, new MyGestureListener());
// Grid ListView object from XML
listView = (ListView) findViewById(R.id.list);
mDetector = new GestureDetectorCompat(this, new MyGestureListener());
// Defined Array values to show in ListView
String[] values = new String[] { "Android List View",
"Adapter implementation", "Simple List View In Android",
"Create List View Android", "Android Example",
"List View Source Code", "List View Array Adapter",
"Android Example List View" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, values);
listView.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public boolean onTouchEvent(MotionEvent event) {
this.mDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
Context context = getApplicationContext();
public boolean onDown(MotionEvent event) {
return true;
}
public void onLongPress(MotionEvent event) {
Toast.makeText(context, "Long Press", Toast.LENGTH_SHORT).show();
}
public boolean onFling(MotionEvent event1, MotionEvent event2,
float velocityX, float velocityY) {
float sensitvity = 50;
// TODO Auto-generated method stub
if ((event1.getX() - event2.getX()) > sensitvity) {
Toast.makeText(context, "Swipe Left", Toast.LENGTH_SHORT)
.show();
} else if ((event2.getX() - event1.getX()) > sensitvity) {
Toast.makeText(context, "Swipe Right", Toast.LENGTH_SHORT)
.show();
}
if ((event1.getY() - event2.getY()) > sensitvity) {
if (event2.getPressure() > event1.getPressure()) {
Toast.makeText(context, "Swipe Up + Hold",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "Swipe Up", Toast.LENGTH_SHORT).show();
}
} else if ((event2.getY() - event1.getY()) > sensitvity) {
if (event2.getPressure() > event1.getPressure()) {
Toast.makeText(context, "Swipe Down + Hold",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "Swipe Down", Toast.LENGTH_SHORT).show();
}
}
return true;
}
public boolean onSingleTapConfirmed(MotionEvent event) {
Toast.makeText(context, "Single Tap Confirmed", Toast.LENGTH_SHORT)
.show();
return true;
}
public boolean onDoubleTap(MotionEvent event) {
Toast.makeText(context, "Double Tap Confirmed", Toast.LENGTH_SHORT).show();
return true;
}
}
}