我想将布局从recyclerview
中的适配器中移走,并且我想使用片段将布局移到活动中,并在适配器上将意图从片段移到活动中,
这是我的适配器:
public class VerifikasiPembayaranAdapter extends RecyclerView.Adapter<VerifikasiPembayaranAdapter.ViewHolder> {
public VerifikasiPembayaranFragment pembayaranFragment;
public VerifikasiPembayaranAdapter() {}
@NonNull
@Override
public VerifikasiPembayaranAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.list_verifikasi_pembayaran,viewGroup,false);
final ViewHolder viewHolder = new ViewHolder(v);
viewHolder.list_verifikasi_pembayaran.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(pembayaranFragment.getContext(), VerifikasiPembayaranActivity.class);
pembayaranFragment.startActivity(intent);
}
});
return viewHolder;
}
}
,错误提示: 尝试在空对象引用上调用虚拟方法'android.support.v4.app.FragmentActivity com.example.umroini.belajar.Fragment.VerifikasiPembayaranFragment.getActivity()'。
答案 0 :(得分:0)
您不应处理适配器内与Intent有关的所有内容。您的适配器应仅处理如何将数据呈现给用户。与数据操作,处理等有关的所有事务都应委托给Fragment或Activity。因此,您需要使用Listener。
首先,在适配器中创建侦听器。
public class VerifikasiPembayaranAdapter extends RecyclerView.Adapter<VerifikasiPembayaranAdapter.ViewHolder> {
public interface Listener {
void onItemClicked(YourDataItem item);
}
private Listener listener;
public VerifikasiPembayaranAdapter(Listener listener) {
this.listener = listener;
}
@NonNull
@Override
public VerifikasiPembayaranAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
...
viewHolder.list_verifikasi_pembayaran.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onItemClicked(yourItem);
}
});
return viewHolder;
}
}
第二,最后,在“活动”或“片段”中使用适配器:
VerifikasiPembayaranAdapter.Listener listener = new VerifikasiPembayaranAdapter.Listener() {
@Override
public void onItemClicked(YourDataItem item) {
// Here you handling the click listener of item.
Intent intent = new Intent(getActivity(), VerifikasiPembayaranActivity.class);
pembayaranFragment.startActivity(intent);
}
};
VerifikasiPembayaranAdapter adapter = new VerifikasiPembayaranAdapter(listener);