单击recyclerview项目打开片段

Mar*_*tin 1 android android-fragments android-recyclerview

我正在尝试最后一个查看日,通过单击recyclerview项目来打开片段.我仍然得到相同的错误:方法getSupportFragmentManager()未定义类型SightsAdapter.ListItemViewHolder

我读了很多线程,但他们无法帮助我,我对android很新.有谁知道我做错了什么?

这是我的代码:

package com.example.stadtfuehrer;



import java.util.ArrayList;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import android.view.LayoutInflater;
import android.support.v4.app.*;



public class SightsAdapter  extends RecyclerView.Adapter<SightsAdapter.ListItemViewHolder> {

private ArrayList<Sights> listData;

public SightsAdapter(ArrayList<Sights> list){
    this.listData = list;
}

@Override
public int getItemCount(){
    return listData.size();
}

@Override
public void onBindViewHolder(ListItemViewHolder holder, int position){
    Sights sight = listData.get(position);
    holder.textViewSightsName.setText(sight.getName());

}

@Override
public ListItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_listitem_recyclerview, parent, false);
    //itemView.setPadding(10, 5, 10, 5);
    return new ListItemViewHolder(itemView);
}



public static class ListItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    public TextView textViewSightsName;

    public ListItemViewHolder(View itemView){
        super(itemView);
        textViewSightsName = (TextView) itemView.findViewById(R.id.name_listitem);
        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v){
        getSupportFragmentManager().beginTransaction().replace(R.id.container,new FragmentSightDetailed() ).commit();
        Toast.makeText(itemView.getContext(), "Item clicked. "+textViewSightsName.getText(), Toast.LENGTH_SHORT).show();

    }

}   
}
Run Code Online (Sandbox Code Playgroud)

小智 7

MainActivity主要;

public ViewAdapter(Context context, List<Information> data,MainActivity ma)
{
    inflater=LayoutInflater.from(context);
    this.data=data;
    this.context=context;
    main=ma;
}
main.getSupportFragmentManager().beginTransaction().replace(R.id.container,new Fragment1()).commit();
Run Code Online (Sandbox Code Playgroud)

这对我来说很好,只需将MainActivity.this传递给Adapter.It的参数化构造函数即可.