講解recyclerview時需要的adapter
package com.example.eva.CourseAdapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.eva.R;
public class LinearCourseFinishAdapter extends RecyclerView.Adapter <RecyclerView.ViewHolder>{
@NonNull
private Context mContext;
private OnItemClickListener mListener;
//private List<String> list;
public LinearCourseFinishAdapter(Context context , OnItemClickListener listener){
this.mContext = context;
this.mListener = listener;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//viewType可以通過這個,展示不同的item
return new LinearViewHolder(LayoutInflater.from(mContext).inflate(R.layout.course_finish_item, parent, false));
//這裏需要傳入每個item長什麼樣的佈局,需要去layout中去畫我們的佈局
}
@Override
//通過getItemViewType的返回值來選擇具體的item顯示
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {
((LinearViewHolder)holder).textView.setText("四級詞彙");
//如果是直接用viewholder的話,是不能用test view的
//將點擊事件放到外面
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Toast.makeText(mContext,"click..."+position,Toast.LENGTH_SHORT).show();
mListener.onClick(position);
}
});
}
//去控制viewType的方法,根據位置的奇偶性來區分
@Override
public int getItemViewType(int position) {
if(position % 2 == 0){
return 0;//偶數
}else{
return 1;
}
}
@Override
public int getItemCount() {
return 1;
}
class LinearViewHolder extends RecyclerView.ViewHolder{
private TextView textView;
public LinearViewHolder(View itemView){
super(itemView);
textView = itemView.findViewById(R.id.finish_title);
}
}
//接口
public interface OnItemClickListener{
void onClick(int pos);
}
}