1

私はアンドロイドにリストを持っています。ユーザーが画面を左右にスライドするたびに、詳細を含む単一のアイテムを表示する必要があります。この状況では、どの方法を使用する必要がありますか。

スクリーンショットの例: 最初の項目

最初の項目 http://imageshack.us/a/img707/9789/slide1t.png

ユーザーが左にスライドすると、2 番目の項目が表示されます

最初の項目 http://imageshack.us/a/img163/7351/slide2nl.png

4

4 に答える 4

1

ヨは以下のチュートリアルを見ることができます、

http://www.edumobile.org/android/android-beginner-tutorials/view-pager-example-in-android-development/

ここに画像の説明を入力してください

于 2012-12-25T12:37:47.797 に答える
1

ViewPageIndicator https://github.com/JakeWharton/Android-ViewPagerIndicatorを使用できます

于 2012-12-25T11:31:05.543 に答える
1

TOMKA で言及されている ViewPageIndicator と ExpandableListView の組み合わせでうまくいくはずです: http://developer.android.com/reference/android/widget/ExpandableListView.html

于 2012-12-25T11:39:02.077 に答える
0

私の質問に対する簡単な解決策を見つけました。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

}

}

于 2013-01-02T14:47:21.837 に答える