嗨,我的片段中有回收景
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_list_petrole, container, false);
recyclerView = (RecyclerView)view.findViewById(R.id.recycle_view);
allPetroles = getArguments().getParcelableArrayList("petroles");
mLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(mLayoutManager);
mAdapter = new RecyclerAdapter(allPetroles, getActivity());
recyclerView.setAdapter(mAdapter);
return view;
}
在RecycleView适配器中,我将OnBindViewHolder的onclicklistener设置为OnClickListener,因此,单击一些RAW发送回片段中的RAW后,我需要进行一些信息(位置((位置(,然后进行一些更改(对此信息进行一些更改(将此信息添加到活动中,并在GMAPS上添加一些新视图((这个OnBindViewHolder:
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
holder.linearClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
positionClick = position;
notifyDataSetChanged();
--------------I NEED CODE HERE----------------------
}
});
if (positionClick == position) {
holder.linearClick.setSelected(true);
}
else {
holder.linearClick.setSelected(false);
}
我不明白我应该如何做
在recycleradapter中:
1-添加一个内部接口:
/**********
*
* Inner interface
*
*/
public interface OnClickListener {
void onItemClicked(Item item);
}
2-在构造函数中添加一个参数:
public RecyclerAdapter(Context context, List<Item> data, OnClickListener onClickListener) {
mContext = context;
mData = data;
mListener = onClickListener
}
3-致电听众:
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
holder.linearClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//positionClick = position;
//you don't need this here : notifyDataSetChanged();
mListener.onItemClicked(mData.get(position));
}
});
if (positionClick == position) {
holder.linearClick.setSelected(true);
}
else {
holder.linearClick.setSelected(false);
}
您的片段应实现RecyclerAdapter.OnClickListener
public class YourFragment extends Fragment implements RecyclerAdapter.OnClickListener {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_list_petrole, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
recyclerView = (RecyclerView)view.findViewById(R.id.recycle_view);
allPetroles = getArguments().getParcelableArrayList("petroles");
mLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(mLayoutManager);
mAdapter = new RecyclerAdapter(getActivity(), allPetroles, this);
recyclerView.setAdapter(mAdapter);
}
@Override
void onItemClicked(Item item) {
// TODO put your code here
}
}