Java 无法在片段类窗体适配器类内强制转换onItem clicklistener
我有一个带有recycleview的片段,我在其中填充了来自internet的json项。 它加载得很好,我想做的下一步是在单击任何行时打开新活动。它在活动中工作,所以我修改了片段的相同代码,但对于它在第行抛出异常的片段Java 无法在片段类窗体适配器类内强制转换onItem clicklistener,java,android,android-fragments,adapter,Java,Android,Android Fragments,Adapter,我有一个带有recycleview的片段,我在其中填充了来自internet的json项。 它加载得很好,我想做的下一步是在单击任何行时打开新活动。它在活动中工作,所以我修改了片段的相同代码,但对于它在第行抛出异常的片段 mExampleAdapter.setOnItemClickListener(getActivity()); 使用errror setOnItemClickListener时,reference adatper不能应用于片段activity,因此当我将行更改为
mExampleAdapter.setOnItemClickListener(getActivity());
使用errror setOnItemClickListener时,reference adatper不能应用于片段activity,因此当我将行更改为
(ExampleAdapter.OnItemClickListener)
当我建造和运行时。然后,应用程序崩溃,错误是无法将包含framgnet的Mainactivity强制转换到。例如Adapter$OnItemClickListener
这是我的整个片段类
公共类Mynotes扩展片段实现ExampleAdapter.OnItemClickListener{
公共静态最终字符串YTD_LINK=“LINK”;
私人回收视图mRecyclerView;
私有示例适配器mExampleAdapter;
私有ArrayList mExampleList;
私有请求队列mRequestQueue;
字符串url=”https://api.myjson.com/bins/16mecx";
公共Mynotes(){
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.activity_jsonfeed,container,false);
mRecyclerView=view.findviewbyd(R.id.recycler\u视图);
mRecyclerView.setHasFixedSize(true);
setLayoutManager(新的LinearLayoutManager(getActivity());
mRecyclerView.addItemDecoration(新的MyDividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL,36));
mExampleList=newArrayList();
mExampleAdapter=新的ExampleAdapter(getActivity(),mExampleList);
mRecyclerView.setAdapter(mExampleAdapter);
mExampleAdapter.setOnItemClickListener((ExampleAdapter.OnItemClickListener)getActivity());
parseJSON();
返回视图;
}
私有void parseJSON(){
JsonObjectRequest=新的JsonObjectRequest(request.Method.GET,url,null,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
myProgressBar.setVisibility(View.GONE);
试一试{
JSONArray JSONArray=response.getJSONArray(“hits”);
for(int i=0;i }
在片段中工作时,将getActivity替换为getContext
你可以在这里读更多
您的活动应该实现ExampleAdapter.OnItemClickListener如果
Mynotes
是实现ExampleAdapter.OnItemClickListener
的工具,为什么您要尝试将活动
传递给mExampleAdapter.setOnItemClickListener()
?您不想要当前的Mynotes
实例;i、 例如,this
?嗯,用this代替getActivityt应该可以解决问题。但是,当我构建并运行应用程序时,当我单击任意位置时,它不会显示任何应该打开新活动的操作。我不太确定“它不会显示任何操作”是什么意思,但您忘记将您的示例视图持有者设置为视图中的OnClickListener
;e、 例如,itemView.setOnClickListener(这个)代码>,在示例ViewHolder
构造函数中。对不起,Mike,我编写的操作参考意味着我想在单击任何行时打开NewActivity类。好的,是的,您忘记设置OnClickListener
。