Этот вопрос похож на Доступ к элементам в CardView после их создания и помещения в RecyclerView. Но я не понял ответа.
У меня есть CardViewAdapter ViewHolder
-
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView card_text;
public ViewHolder(View itemLayoutView) {
super(itemLayoutView);
card_text = (TextView) itemLayoutView.findViewById(R.id.info_text);
}
}
И я обращаюсь к нему, используя OnBindViewHolder
, который находится в том же, CardViewAdapter
-
public void onBindViewHolder(ViewHolder viewHolder, int position) {
viewHolder.card_text.setText(mColorData[position]);
viewHolder.card_text.setBackgroundColor(Color.parseColor("#616161"));
}
Но у меня также есть RecyclerView
, и теперь я хочу получить доступ к TextView
из этого CardViewAdapter
и использовать его в своем RecyclerView
Activity, чтобы я мог установить действие, когда оно (долгое) щелкнуло.
My RecyclerView
-
public class RecyclerViewMainActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recycler_view);
String[] colorData = {
//a simple string array
}
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
mAdapter = new CardViewDataMainAdapter(colorData);
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.addOnItemTouchListener(new RecyclerItemClickListener(this, mRecyclerView, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
//do stuff here
}
@Override
public void onItemLongClick(View view, int position) {
//I want to do stuff here using TextView from CardViewAdapter.
}
}
P.S. Я реализовал OnClickListener
и OnLongClickListener
, используя https://stackoverflow.com/a/26826692/4458075.