Skip to content

Instantly share code, notes, and snippets.

@ChaMinGyu
Last active June 7, 2018 03:06
Show Gist options
  • Save ChaMinGyu/103452d214264b98ddee3bef1cf3be24 to your computer and use it in GitHub Desktop.
Save ChaMinGyu/103452d214264b98ddee3bef1cf3be24 to your computer and use it in GitHub Desktop.
It is a recycling view adapter. You can specify the type of view You can bring different views and set them up. And by adding your defined interface listener You can specify listener events for each view.
package your.project.package.name;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
public class BaseTypeAdapter<T> extends RecyclerView.Adapter<BaseTypeAdapter.MyViewHolder> {
private Context context;
private ArrayList<T> ArrayList;
private RecyclerViewClickListener itemOnClickListener;
public BaseTypeAdapter(Context context, ArrayList<T> ArrayList,
RecyclerViewClickListener itemOnClickListener) {
this.context = context;
this.ArrayList = ArrayList;
this.itemOnClickListener = itemOnClickListener;
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView textView1;
Button delete_bt;
// add..
MyViewHolder(View view) {
super(view);
textView1 = view.findViewById(R.id.textView1);
delete_bt = view.findViewById(R.id.delete_bt);
// add..
}
void setText(String content) {
if (textView1 == null) return;
textView1.setText(content);
}
void setFileDeleteListener(View.OnClickListener deleteClickListener) {
if (delete_bt == null) return;
delete_bt.setOnClickListener(deleteClickListener);
}
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
int layout = -1;
switch (viewType) {
case T.TYPE1:
layout = R.layout.item_type1;
break;
case T.TYPE2:
layout = R.layout.item_type2;
break;
case T.TYPE3:
layout = R.layout.item_type3;
break;
}
View v = LayoutInflater.from(context).inflate(layout, parent, false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(final MyViewHolder myViewHolder, final int position) {
final int pos = myViewHolder.getAdapterPosition();
if (pos == -1) {
return;
}
final T item = ArrayList.get(pos);
switch (item.getType()) {
case T.TYPE1:
myViewHolder.setText("This is a text view.");
myViewHolder.setFileDeleteListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int pos = myViewHolder.getAdapterPosition();
if (pos == -1) {
return;
}
itemOnClickListener.recyclerViewItemDeleteClicked(v, pos);
}
});
// item setting.
break;
case T.TYPE2:
// item setting.
break;
case T.TYPE3:
// item setting.
break;
}
}
@Override
public int getItemCount() {
return ArrayList.size();
}
@Override
public int getItemViewType(int position) {
return ArrayList.get(position).getType();
}
}
package your.project.package.name;
import android.view.View;
/**
* Created by chaming on 2017. 12. 21..
*/
public interface RecyclerViewClickListener {
void recyclerViewItemClicked(View v, int position);
void recyclerViewItemDeleteClicked(View v, int position);
void recyclerViewItemReviseClicked(View v, int position);
void recyclerViewSendBtnClicked(View v);
}
//
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment