如何在recyclerView适配器中使用getItemAtPosition()? [英] How to use getItemAtPosition() in recyclerView adapter?

查看:110
本文介绍了如何在recyclerView适配器中使用getItemAtPosition()?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从数据库中获取数据,当点击项目时,我会打算进行另一项活动,但是使用listView我可以使用方法getItemAtPosition()和使用recyclerView我不知道该怎么做。我在这行代码中遇到错误:



光标cursorItem =(光标)mGridAdapter.getItem(position); 





 mGridAdapter.setOnItemClickListener( new  OnItemClickListener (){
@ Override
public void onItemClick(查看视图, int 位置){
Toast.makeText(MainActivity。这个 它的工作原理!,Toast.LENGTH_SHORT)。show();
Cursor cursorItem =(Cursor)mGridAdapter.getItem(position);
birthdayId = cursorItem.getInt(cursorItem.getColumnIndex(DBHelper.BIRTHDAY_ID));
Intent intent = 意图(MainActivity。 ,EditBirthdayActivity。 class );
intent.putExtra(KEY_EXTRA_BIRTHDAY_ID,birthdayId);
startActivity(intent);
}
});





 11-08 00:52: 43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:FATAL EXCEPTION:main 
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:Process:com.dusandimitrijevic.dontforget ,PID:26181
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:java.lang.ClassCastException:model.Birthday无法强制转换为android.database.Cursor
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:at com.dusandimitrijevic.dontforget.MainActivity $ 1.onItemClick(MainActivity.java:94)
11-08 00:52 :43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:at adapter.GridAdapter $ MyViewHolder.onClick(GridAdapter.java:43)
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic。 dontforget E / AndroidRuntime:在android.view.View.performClick(View.java:5197)
11-08 00:52:43.179 2 6181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:at android.view.View $ PerformClick.run(View.java:20926)
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic。 dontforget E / AndroidRuntime:在android.os.Handler.handleCallback(Handler.java:739)
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:at android.os。 Handler.dispatchMessage(Handler.java:95)
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:at android.os.Looper.loop(Looper.java:145)
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:在android.app.ActivityThread.main(ActivityThread.java:5951)
11-08 00:52 :43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:at java.lang.reflect.Method.invoke(Native Method)
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:at java.lang.reflect.Method.invoke(Method.java:372)
11-08 00:52: 43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1400)
11-08 00:52:43.179 26181-26181 /com.dusandimitrijevic.dontforget E / AndroidRuntime:at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)

解决方案

1.onItemClick(MainActivity.java:94)
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:at adapter.GridAdapter


MyViewHolder.onClick(GridAdapter.java:43)
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:at android.view.View.performClick(View.java :5197)
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:at android.view.View


PerformClick.run(View .java:20926)
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:在android.os.Handler.handleCallback(Handler.java:739)
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:at android.os.Handler.dispatchMessage(Handler .java:95)
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:at android.os.Looper.loop(Looper.java:145)
11 -08 00:52:43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:在android.app.ActivityThread.main(ActivityThread.java:5951)
11-08 00:52:43.179 26181-26181 /com.dusandimitrijevic.dontforget E / AndroidRuntime:at java.lang.reflect.Method.invoke(Native Method)
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:at java.lang.reflect.Method.invoke(Method.java:372)
11-08 00:52:43.179 26181-26181 / com.dusandimitrijevic.dontforget E / AndroidRuntime:at com.android.internal.os。 ZygoteInit

I'm trying to get data from database and when item is clicked, i would intent to another activity, but with listView i can use method getItemAtPosition() and with recyclerView i don't know what to do. I'm getting an error at this line of code:

Cursor cursorItem = (Cursor) mGridAdapter.getItem(position);



mGridAdapter.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                Toast.makeText(MainActivity.this, "It works!", Toast.LENGTH_SHORT).show();
                Cursor cursorItem = (Cursor) mGridAdapter.getItem(position);
                birthdayId = cursorItem.getInt(cursorItem.getColumnIndex(DBHelper.BIRTHDAY_ID));
                Intent intent = new Intent(MainActivity.this, EditBirthdayActivity.class);
                intent.putExtra(KEY_EXTRA_BIRTHDAY_ID, birthdayId);
                startActivity(intent);
            }
        });



11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime: FATAL EXCEPTION: main
11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime: Process: com.dusandimitrijevic.dontforget, PID: 26181
11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime: java.lang.ClassCastException: model.Birthday cannot be cast to android.database.Cursor
11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime:     at com.dusandimitrijevic.dontforget.MainActivity$1.onItemClick(MainActivity.java:94)
11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime:     at adapter.GridAdapter$MyViewHolder.onClick(GridAdapter.java:43)
11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime:     at android.view.View.performClick(View.java:5197)
11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:20926)
11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:739)
11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:145)
11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5951)
11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)

解决方案

1.onItemClick(MainActivity.java:94) 11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime: at adapter.GridAdapter


MyViewHolder.onClick(GridAdapter.java:43) 11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime: at android.view.View.performClick(View.java:5197) 11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime: at android.view.View


PerformClick.run(View.java:20926) 11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:739) 11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95) 11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime: at android.os.Looper.loop(Looper.java:145) 11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5951) 11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:372) 11-08 00:52:43.179 26181-26181/com.dusandimitrijevic.dontforget E/AndroidRuntime: at com.android.internal.os.ZygoteInit


这篇关于如何在recyclerView适配器中使用getItemAtPosition()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆