2017-06-04 11 views
0

嗨,我有recycleView在我的片段我在片段得到RecycleView和點擊recycleview元素後,我需要將數據發送到該片段並重新啓動它

@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,所以我需要點擊發回給分片的一些信息(位置),然後做出一些改變一些生後(重發此信息到活動並添加了一些新的觀點有上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); 
    } 

和我不不明白我應該怎麼做此做

回答

0

在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 
    } 
} 
+0

感謝您的回答,但我不understant什麼 mAdapter =新RecyclerAdapter(getActivity(),allPetroles,這一點); 這裏我需要clicklistener對象,但我不明白哪一個?這recycleview從該片段 – sergs

+0

創建這是您的片段實現監聽 –

+0

的RecycleView的適配器 - 公共RecyclerAdapter(上下文的背景下,列表數據,OnClickListener onClickListener){ mContext =上下文; mData = data;我創建這個適配器在我的片段,在您的代碼 mAdapter = new RecyclerAdapter(getActivity(),allPetroles,this); 我們沒有最後一個參數(clickListener對象) – sergs

相關問題