- 내가 시작 (휴지통보기 및 카드보기 사용) 내 그리드의 각 항목에 대한 온 클릭을 구현하는 방법을 알고 싶습니다
새로운 activity.Below 내 ViewHolder 클래스와이다 RecyclerView 어댑터 클래스구현의 onclick에 Recyclerview 어댑터
이 내가 Callba으로 인터페이스를 사용하여 내 RecyclerView 어댑터 클래스
import android.app.Activity; import android.content.Context; import android.content.Intent; import android.nfc.Tag; import android.nfc.TagLostException; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; import java.util.List; public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewHolders> { private List<ItemObject> itemList; private Context context; public RecyclerViewAdapter(Context context, List<ItemObject> itemList) { this.itemList = itemList; this.context = context; } @Override public RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int viewType) { View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view_list, null); RecyclerViewHolders rcv = new RecyclerViewHolders(layoutView); return rcv; } @Override public void onBindViewHolder(RecyclerViewHolders holder, final int position) { holder.countryName.setText(itemList.get(position).getName()); holder.countryPhoto.setImageResource(itemList.get(position).getPhoto()); holder.countryPhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(view.getContext(),"This is Maps",Toast.LENGTH_SHORT).show(); } }); } @Override public int getItemCount() { return this.itemList.size(); } } //This is my Recycler View Holder Class import android.content.Intent; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; public class RecyclerViewHolders extends RecyclerView.ViewHolder implements View.OnClickListener { public TextView countryName; public ImageView countryPhoto; public RecyclerViewHolders(View itemView) { super(itemView); itemView.setOnClickListener(this); countryName = (TextView) itemView.findViewById(R.id.country_name); countryPhoto = (ImageView) itemView.findViewById(R.id.country_photo); } @Override public void onClick(View view) { Toast.makeText(view.getContext(), "Clicked Country Position = " + getPosition(), Toast.LENGTH_SHORT).show(); } }
답변
입니다 이 사건을 처리 할 ck.
먼저 어댑터 내부에 인터페이스 클래스를 만듭니다.
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewHolders> {
private List<ItemObject> itemList;
private Context context;
private ItemClickListener mItemClickListener;
public RecyclerViewAdapter(Context context, List<ItemObject> itemList) {
this.itemList = itemList;
this.context = context;
}
@Override
public RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int viewType) {
View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view_list, null);
RecyclerViewHolders rcv = new RecyclerViewHolders(layoutView);
return rcv;
}
public void addItemClickListener(ItemClickListener listener) {
mItemClickListener = listener;
}
@Override
public void onBindViewHolder(RecyclerViewHolders holder, final int position) {
holder.countryName.setText(itemList.get(position).getName());
holder.countryPhoto.setImageResource(itemList.get(position).getPhoto());
holder.countryPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mItemClickListener != null) {
mItemClickListener.onItemClick(position);
}
}
});
}
@Override
public int getItemCount() {
return this.itemList.size();
}
//Define your Interface method here
public interface ItemClickListener {
void onItemClick(int position);
}
}
그런 다음,하자가 활동의 또는 조각은 그 인터페이스를 구현하고 청취자를 추가합니다.
public class MyFragment extends Fragment
implements RecyclerViewAdapter.ItemClickListener {
private List<ItemObject> mItemList;
...
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
final Bundle savedInstanceState) {
...
//Make sure mItemList not NULL
RecyclerViewAdapter adapter = new RecyclerViewAdapter(getContext(), mItemList);
//Add Item Click listener
adapter.addItemClickListener(this);
}
@Override
public void onItemClick(int position) {
Toast.makeText(.getContext(),"Click on item: " + position,Toast.LENGTH_SHORT).show();
}
}
희망이 도움이 될 것입니다!
답변을 주셔서 감사합니다. 예. 그들은 나를 위해 작동합니다. – Xcoder
@Xcoder :) 도움을 청하십시오. –
잘 같은 코드 모양, 여기에 새로운 활동을 열 의도를 creat에하는 방법을 요구하는 자극 인 경우
이 게으른 방법 최선의 연습
하지 않는 것이 좋습니다 변경 정적 변수를 확인해야합니다 당신 미안의 activty에서 마녀는 클릭
를 내부에 그 public class MainActivity extends AppCompatActivity
public static Activity activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setElevation(0);
activity=this;
}
}
과 같은 refrance에게 어떤 것을 보유입니다 0
...
@Override
public void onClick(View v) {
Toast.makeText(.getContext(),"Click on item: " + position,Toast.LENGTH_SHORT).show();
startActivity(new Intent(MainActivity.activity, MyOtherActivity.class));
}
...
나는 당신의 문제가 무엇인지 초기 후 완전히 명확하지 해요,하지만 당신이해야 할 모든 당신의 RecyclerViewAdapter
에 OnClickListener를 구현하는 경우, 바로 다음을 추가 :
첫째, 변경 클래스 선언 여기에 :
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewHolders> implements OnClickListener {
@Override
public void onClick(View view) {
Toast.makeText(this.getContext(),"Code to change activity goes here." ,Toast.LENGTH_SHORT).show();
}
마지막으로 어댑터 클래스에 OnClickListener를 설정해야합니다.
@Override
public void onBindViewHolder(RecyclerViewHolders holder, final int position) {
holder.setOnClickListener(this);
holder.countryName.setText(itemList.get(position).getName());
holder.countryPhoto.setImageResource(itemList.get(position).getPhoto());
holder.countryPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mItemClickListener != null) {
mItemClickListener.onItemClick(position);
}
}
});
}
이제 개인적으로 나는 이런 식으로하지 않을 것입니다.
private AdapterOnClickListener implements OnClickListener() {
private String message;
public AdapterOnClickListener (String toast) {
message = toast;
}
public void onClick (View v) {
Toast.makeText(this.getContext(),toast ,Toast.LENGTH_SHORT).show();
}
}
을 그럼 당신은 전화 어댑터에 :
@Override
public void onBindViewHolder(RecyclerViewHolders holder, final int position) {
holder.setOnClickListener(new AdapterOnClickListener ("Instead of a string, I can be an intent. Then in your listener, you can call (If I recall correctly) getContext().startActivity(intent), and have an activity.");
holder.countryName.setText(itemList.get(position).getName());
holder.countryPhoto.setImageResource(itemList.get(position).getPhoto());
holder.countryPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mItemClickListener != null) {
mItemClickListener.onItemClick(position);
}
}
});
}
- 1. RecyclerView 어댑터
- 2. 안드로이드 RecyclerView 어댑터 :
- 3. RecyclerView 맞춤형 서체 어댑터
- 4. RecyclerView 어댑터 버퍼
- 5. Android RecyclerView 어댑터 위치는 -1
- 6. RecyclerView 어댑터 : 왜 onLongClick 메서드가 onClick과 충돌합니까?
- 7. RecyclerView 어댑터 notifyItemChanged 트리거 두 번
- 8. Android recyclerView 어댑터 팝업 메뉴가 작동하지 않습니다.
- 9. RecyclerView 및 어댑터, 데이터 변경을 처리해야합니까?
- 10. StartActivityResult 어댑터 클래스 내에서 및 recyclerview 업데이트
- 11. 자체 구현의 어댑터 생성자가 hashMap.values ()를 허용하지 않습니다.
- 12. BizTalk 2013 : SFTP 어댑터 구현의 어리 석음 (읽기 전용 처리)
- 13. 프로그래밍 방식으로 recyclerview onbind 뷰어 어댑터 내부에 텍스트 뷰 추가
- 14. Android : 글라이드를 어댑터 (RecyclerView)에서 수동으로 지우는 것이 좋습니다.
- 15. RecyclerView 및 저장 + 어댑터 항목 당 임시 상태 검색
- 16. RecyclerView 어댑터 onBindViewHolder는 notifyItemChanged를 통해 두 번째 호출에서 업데이트됩니다.
- 17. 데이터 세트의 필드를 기반으로하는 2 섹션이있는 RecyclerView 어댑터
- 18. ViewHolder RecyclerView 어댑터 내부에서 동적 뷰를 추가하는 방법
- 19. Android RecyclerView 어댑터 변경 알림, DiffUtil 및 항목 추가
- 20. RecyclerView 내부 Android RecyclerView?
- 21. RecyclerView
- 22. RecyclerView 여백
- 23. 안드로이드 RecyclerView LayoutManager의 예외
- 24. RecyclerView 목록 종료 리스너
- 25. RecyclerView 이미지 컬렉션이있는 항목
- 26. onclick에 객체 전달하기
- 27. 전송 이벤트를 onClick에 반박하십시오.
- 28. onclick에 대한 jQuery 대체
- 29. onClick에 여러 줄이 있습니까?
- 30. onclick에 쿠키를 만들고 저장하십시오.
문제가 무엇입니까 내가 대신 할 것이라고는이 같은 어댑터에 개인 내부 클래스를 추가입니까? – Enzokie
왜 뷰 홀더에 클릭 리스너를 추가 했습니까? –