如何向右或向左滑动以获取从列表视图意图开始的下一个活动详细信息

zsh5032

因此,我有一个由xml数组列表填充的listview。当我单击列表中的一行时,它将通过意图进入详细信息页面来启动新活动。我希望能够向右或向左滑动以获得与列表视图中的下一行相对应的下一个详细信息页面。我已经设置了可以正常工作的onSwipeRight和onSwipeLeft,但是我不知道在其中放入什么以填充下一个/上一个详细信息页面。

这是我的主要活动,其中包括列表视图和单击侦听器,以将相关信息传递给详细信息活动

public class MainActivity extends AppCompatActivity {
MyDBHandler dbHandler;
int listViewPosition;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    dbHandler = new MyDBHandler(this, null, null, 1);
    //Action Bar customization
    final android.support.v7.app.ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayOptions(android.support.v7.app.ActionBar.DISPLAY_SHOW_CUSTOM);
    actionBar.setCustomView(R.layout.actionbar);

    setContentView(R.layout.activity_main);

    //fill list view with xml array of routes
    final CharSequence[] routeListViewItems = getResources().getTextArray(R.array.routeList);
    ////fill list view with xml array of route numbers
    final TypedArray routeNumberImages = getResources().obtainTypedArray(R.array.routeNumberImages);
    //fills route detail text view with xml array info
    final CharSequence[] routeDetail= getResources().getTextArray(R.array.routeDetail);
    //fills route detail image view with xml array of images
    final TypedArray image = getResources().obtainTypedArray(R.array.routeImages);


    //custom adapter for list view
    ListAdapter routeAdapter = new CustomAdapter(this, routeListViewItems, routeNumberImages);
    final ListView routeListView = (ListView) findViewById(R.id.routeListView);
    routeListView.setAdapter(routeAdapter);

    //sets first visible list item
    listViewPosition = getIntent().getIntExtra("listViewPosition", 0);
    routeListView.setSelectionFromTop(listViewPosition, 0);

    routeListView.setOnItemClickListener(
            new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                    CharSequence route = routeListViewItems[position];
                    int imageId = (int) image.getResourceId(position, -1);
                    if (route.equals(routeListViewItems[position]))
                    {
                        Intent intent = new Intent(view.getContext(), RouteDetails.class);
                        intent.putExtra("route", routeDetail[position]);
                        intent.putExtra("imageResourceId", imageId);
                        intent.putExtra("routeName", routeListViewItems[position]);
                        intent.putExtra("listViewPosition", position);
                        startActivity(intent);
                    }
                }
            }
    );
}

这是我的详细信息页面以及onswipe侦听器

public class RouteDetails extends AppCompatActivity {
MyDBHandler dbHandler;
ImageView routeImage;
String routeName;
CharSequence route;
CheckBox routeCheckBox;
int listViewPosition;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_route_details);

    dbHandler = new MyDBHandler(this, null, null, 1);

    //sets actionbar title
    routeName = getIntent().getExtras().getString("routeName");
    getSupportActionBar().setTitle(routeName);

    //TextView for route details
    final TextView routeDetailsView = (TextView) findViewById(R.id.routeDetailsView);
    route = getIntent().getExtras().getCharSequence("route");
    routeDetailsView.setText(route);

    //ImageView for route details
    routeImage = (ImageView) findViewById(R.id.routeImage);
    final int mImageResource = getIntent().getIntExtra("imageResourceId", 0);
    routeImage.setImageResource(mImageResource);

    ///gets position of row that was clicked to pass into database
    listViewPosition = getIntent().getIntExtra("listViewPosition", 0);


    ///////////////

    routeDetailsView.setOnTouchListener(new OnSwipeTouchListener(this) {
        @Override
        public void onSwipeLeft() {
            // Whatever
            Intent i = new Intent(RouteDetails.this,RouteDetails.class);

            startActivity(i);
        }

    @Override
    public void onSwipeRight() {
        // Whatever
        Intent i = new Intent(RouteDetails.this,RouteDetails.class);

        startActivity(i);
    }

    });

    ///////////////

}

感谢您的任何帮助!

实施新代码后进行错误编辑

01-04 12:55:51.694 25443-25443/com.example.zach.listview E/AndroidRuntime: FATAL EXCEPTION: main
                                                                       Process: com.example.zach.listview, PID: 25443
                                                                       java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.zach.listview/com.example.zach.listview.RouteDetails}: java.lang.NullPointerException: Attempt to read from null array
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                           at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                           at android.os.Looper.loop(Looper.java:148)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                           at java.lang.reflect.Method.invoke(Native Method)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                        Caused by: java.lang.NullPointerException: Attempt to read from null array
                                                                           at com.example.zach.listview.RouteDetails.onCreate(RouteDetails.java:56)
                                                                           at android.app.Activity.performCreate(Activity.java:6251)
                                                                           at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                           at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                           at android.os.Looper.loop(Looper.java:148) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                           at java.lang.reflect.Method.invoke(Native Method) 
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
雷米·西莉亚(Remy Cilia)

而不是将单个项目传递到您的详细信息页面,您应该传递整个数组以及当前位置(您已经执行过)。

在您的点击事件(MainActivity)中,替换为:

intent.putExtra("route", routeDetail[position]);
intent.putExtra("routeName", routeListViewItems[position]);

和:

intent.putExtra("routes", routeDetail);
intent.putExtra("routeNames", routeListViewItems);

在RouteDetails中,您需要获取数组和当前对象:

CharSequence[] routes;
CharSequence[] routeNames;

// ...

listViewPosition = getIntent().getIntExtra("listViewPosition", 0);

routes = getIntent().getExtras().getCharSequenceArray("routes");
routeNames = getIntent().getExtras().getCharSequenceArray("routeNames");

route = routes[listViewPosition];
routeName = routeNames[listViewPosition];

在滑动事件中,只需将数组与上一个或下一个索引一起传递:

routeDetailsView.setOnTouchListener(new OnSwipeTouchListener(this) {
    @Override
    public void onSwipeLeft() {
        // Whatever
        Intent i = new Intent(RouteDetails.this,RouteDetails.class);
        i.putExtra("routes", routes);
        i.putExtra("routeNames", routeNames);
        i.putExtra("imageResourceId", imageId);
        i.putExtra("listViewPosition", position + 1);
        startActivity(i);
    }

    @Override
    public void onSwipeRight() {
        // Whatever
        Intent i = new Intent(RouteDetails.this,RouteDetails.class);
        i.putExtra("routes", routes);
        i.putExtra("routeNames", routeNames);
        i.putExtra("imageResourceId", imageId);
        i.putExtra("listViewPosition", position - 1);
        startActivity(i);
    }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单击列表项,在详细信息活动上浏览列表视图活动中的下一个和上一个列表项

来自分类Dev

实施viewpager后无法在我的详细信息活动中滑动至下一个项目

来自分类Dev

当<input>向右滑动时,滑动下一个内容;当<input>隐藏时,向左滑动

来自分类Dev

如何显示上一个和下一个列表项的详细信息

来自分类Dev

如何在记录详细信息视图中添加下一个和上一个控件?

来自分类Dev

选择选定行时在下一个视图中检索数据的详细信息

来自分类Dev

如何开始下一个活动?

来自分类Dev

匹配一个模式,然后转到下一个条件并打印详细信息

来自分类Dev

如何将详细信息从“回收者”视图传递到另一个活动?

来自分类Dev

如何从URL(json数据)显示另一个活动中列表的单个项目的详细信息?

来自分类Dev

详细信息视图中的上一个页面的详细信息视图-Django

来自分类Dev

如何获取列表的下一个树元素

来自分类Dev

获取意图详细信息

来自分类Dev

单击卡以在带有下一个和上一个按钮的弹出窗口中显示其各自的详细信息

来自分类Dev

将选定的 ListFragment 的行项目详细信息(当前选项卡)传递给另一个 ListFragment(下一个选项卡)

来自分类Dev

使用箭头键向左/向右移动下一个/上一个项目

来自分类Dev

如何从另一个域获取用户详细信息

来自分类Dev

如何显示一个标记的更多详细信息?

来自分类Dev

下一个Div向右和向左浮动两个div后无法正确显示

来自分类Dev

在下一个视图中获取如何使用HttpRedirect调用该视图

来自分类Dev

单击Listview图像,在下一个屏幕上使用C#中相同的图像显示详细信息(wp8.1)

来自分类Dev

如何使用setonitemclicklistener获取listitem的位置并发送到下一个活动

来自分类Dev

向左轻扫以根据拇指速度拉动下一个视图

来自分类Dev

Android滑动视图并在屏幕上显示下一个视图

来自分类Dev

单击搜索小部件时意图进行下一个活动

来自分类Dev

Android片段意图按钮的下一个活动

来自分类Dev

下一个活动的意图,吐司,进度条不起作用

来自分类Dev

如何从列表中删除一个项目并从下一个项目开始计数?

来自分类Dev

如何在水平Recyclerview上滑动,仅将下一个项目带入视图-Android

Related 相关文章

  1. 1

    单击列表项,在详细信息活动上浏览列表视图活动中的下一个和上一个列表项

  2. 2

    实施viewpager后无法在我的详细信息活动中滑动至下一个项目

  3. 3

    当<input>向右滑动时,滑动下一个内容;当<input>隐藏时,向左滑动

  4. 4

    如何显示上一个和下一个列表项的详细信息

  5. 5

    如何在记录详细信息视图中添加下一个和上一个控件?

  6. 6

    选择选定行时在下一个视图中检索数据的详细信息

  7. 7

    如何开始下一个活动?

  8. 8

    匹配一个模式,然后转到下一个条件并打印详细信息

  9. 9

    如何将详细信息从“回收者”视图传递到另一个活动?

  10. 10

    如何从URL(json数据)显示另一个活动中列表的单个项目的详细信息?

  11. 11

    详细信息视图中的上一个页面的详细信息视图-Django

  12. 12

    如何获取列表的下一个树元素

  13. 13

    获取意图详细信息

  14. 14

    单击卡以在带有下一个和上一个按钮的弹出窗口中显示其各自的详细信息

  15. 15

    将选定的 ListFragment 的行项目详细信息(当前选项卡)传递给另一个 ListFragment(下一个选项卡)

  16. 16

    使用箭头键向左/向右移动下一个/上一个项目

  17. 17

    如何从另一个域获取用户详细信息

  18. 18

    如何显示一个标记的更多详细信息?

  19. 19

    下一个Div向右和向左浮动两个div后无法正确显示

  20. 20

    在下一个视图中获取如何使用HttpRedirect调用该视图

  21. 21

    单击Listview图像,在下一个屏幕上使用C#中相同的图像显示详细信息(wp8.1)

  22. 22

    如何使用setonitemclicklistener获取listitem的位置并发送到下一个活动

  23. 23

    向左轻扫以根据拇指速度拉动下一个视图

  24. 24

    Android滑动视图并在屏幕上显示下一个视图

  25. 25

    单击搜索小部件时意图进行下一个活动

  26. 26

    Android片段意图按钮的下一个活动

  27. 27

    下一个活动的意图,吐司,进度条不起作用

  28. 28

    如何从列表中删除一个项目并从下一个项目开始计数?

  29. 29

    如何在水平Recyclerview上滑动,仅将下一个项目带入视图-Android

热门标签

归档