私はアンドロイドにリストを持っています。ユーザーが画面を左右にスライドするたびに、詳細を含む単一のアイテムを表示する必要があります。この状況では、どの方法を使用する必要がありますか。
スクリーンショットの例: 最初の項目
最初の項目 http://imageshack.us/a/img707/9789/slide1t.png
ユーザーが左にスライドすると、2 番目の項目が表示されます
私はアンドロイドにリストを持っています。ユーザーが画面を左右にスライドするたびに、詳細を含む単一のアイテムを表示する必要があります。この状況では、どの方法を使用する必要がありますか。
スクリーンショットの例: 最初の項目
最初の項目 http://imageshack.us/a/img707/9789/slide1t.png
ユーザーが左にスライドすると、2 番目の項目が表示されます
ヨは以下のチュートリアルを見ることができます、
ViewPageIndicator https://github.com/JakeWharton/Android-ViewPagerIndicatorを使用できます
TOMKA で言及されている ViewPageIndicator と ExpandableListView の組み合わせでうまくいくはずです: http://developer.android.com/reference/android/widget/ExpandableListView.html
私の質問に対する簡単な解決策を見つけました。OnGestureListener を使用した ViewSwitcher は、私の問題を解決します。
http://www.youtube.com/watch?v=mGwG8-chUEM
参考文献:
ViewFlipper: http://developer.android.com/reference/android/widget/ViewFlipper.html
ViewSwitcher: http://developer.android.com/reference/android/widget/ViewSwitcher.html
GestureDetector.OnGestureListener: http://developer.android.com/reference/android/view/GestureDetector.OnGestureListener.html
ソースコード: http://www.mediafire.com/?fg32sn1345xn5dl
私のアクティビティにはすべてのコードが含まれていないため、機能しない可能性があります。しかし、ロジックはここにあります。
-------私の解決策--------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ViewSwitcher
android:id="@+id/viewSwitcher"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#65ffffff" >
<TextView
android:id="@+id/txtHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="0" />
<TextView
android:id="@+id/txtDetail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtKurum"
android:layout_centerHorizontal="true"
android:text="0" />
</RelativeLayout>
</ViewSwitcher>
</LinearLayout>
-アクティビティ-
public class MyActivity extends Activity implements OnClickListener,
OnGestureListener {
ArrayList<String> liste;
TextView txtHeader;
TextView txtDetail;
private ViewSwitcher switcher;
int bakiyeCounter = 0;
private GestureDetector gesturedetector = null;
int SWIPE_MIN_VELOCITY = 100;
int SWIPE_MIN_DISTANCE = 100;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bakiye);
switcher = (ViewSwitcher) findViewById(R.id.viewSwitcher);
txtHeader = (TextView) findViewById(R.id.txtHeader);
txtDetail = (TextView) findViewById(R.id.txtDetail);
gesturedetector = new GestureDetector(this, this);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// Get Position
float ev1X = e1.getX();
float ev2X = e2.getX();
// Get distance of X (e1) to X (e2)
final float xdistance = Math.abs(ev1X - ev2X);
final float xvelocity = Math.abs(velocityX);
if ((xvelocity > SWIPE_MIN_VELOCITY)
&& (xdistance > SWIPE_MIN_DISTANCE)) {
if (ev1X > ev2X)// Switch Left
{
if (bakiyeCounter < liste.size() - 1) {
bakiyeCounter++;
previousView();
}
} else// Switch Right
{
if (bakiyeCounter > 0) {
bakiyeCounter--;
nextView();
}
}
}
return false;
}
private void previousView() {
txtHeader.setText(liste.get(bakiyeCounter).getHeader());
txtDetail.setText(liste.get(bakiyeCounter).getDetail());
switcher.showPrevious();
}
private void nextView() {
txtDetail.setText(liste.get(bakiyeCounter).getHeader());
txtHeader.setText(liste.get(bakiyeCounter).getDetail());
switcher.showNext();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return gesturedetector.onTouchEvent(event);
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}