需要加依赖,权限
Main主类
public class MainActivity extends AppCompatActivity { private String path = "http://365jia.cn/news/api3/365jia/news/headline?page=1"; private MyAdapter myAdapter; private List<ReaBean01.DataBeanX.DataBean> data; @SuppressLint("HandlerLeak") private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage( msg ); data = (List<ReaBean01.DataBeanX.DataBean>) msg.obj; myAdapter = new MyAdapter( MainActivity.this, data ); recyclerView.setAdapter( myAdapter ); recyclerView.setLayoutManager( new LinearLayoutManager( MainActivity.this, LinearLayoutManager.VERTICAL, true ) ); //动画透明 myAdapter.setOnItemClick( new MyAdapter.OnItemClick() { @Override public void onImageClick(View view) { ObjectAnimator alpha = ObjectAnimator.ofFloat(view, "alpha", new float[]{1f, 0.5f, 0.0f, 0.5f, 1.0f}); alpha.setRepeatMode(ObjectAnimator.RESTART); alpha.setDuration(2000); alpha.setRepeatCount(0); alpha.start(); } @Override public void onItemLongClick(int position) { showAlertDialog(position); } } ); } }; private RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate( savedInstanceState ); setContentView( R.layout.activity_main ); recyclerView = findViewById( R.id.recycler ); initData(); } private void initData() { OkHttpClient okHttpClient = new OkHttpClient.Builder().build(); Request request = new Request.Builder().url( path ).build(); Call call = okHttpClient.newCall( request ); call.enqueue( new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string(); Gson gson = new Gson(); ReaBean01 reaBean01 = gson.fromJson( string, ReaBean01.class ); List<ReaBean01.DataBeanX.DataBean> data = reaBean01.getData().getData(); Message obtain = Message.obtain(); obtain.obj = data; handler.sendMessage( obtain ); } } ); } private void showAlertDialog(final int position) { AlertDialog.Builder builder = new AlertDialog.Builder( MainActivity.this ); builder.setTitle( "是否确认删除" ); builder.setNegativeButton( "取消", null ); builder.setPositiveButton( "确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { data.remove( position); myAdapter.notifyDataSetChanged(); } } ); builder.show(); } }
OnItemClickListener 类
public interface OnItemClickListener { void onItemClick(View view, int position); void onItemLongClick(int position); }
adapter适配器
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private String imageSplice = "http://365jia.cn/uploads/"; private Context context; private List<ReaBean01.DataBeanX.DataBean> list; private LayoutInflater inflater; private final static int NORMAL = 1; private final static int IMAGES = 2; public MyAdapter(Context context, List<ReaBean01.DataBeanX.DataBean> list) { this.context = context; this.list = list; inflater = LayoutInflater.from(context); } @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { RecyclerView.ViewHolder holder; if(viewType == NORMAL){ View view = inflater.inflate( R.layout.normal_item,parent,false); holder = new NormalViewHolder(view); }else if(viewType == IMAGES){ View view = inflater.inflate(R.layout.images_item,parent,false); holder = new ImagesViewHolder(view); }else{ holder = null; } return holder; } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) { int itemViewType = getItemViewType(position); ReaBean01.DataBeanX.DataBean dataBean = list.get( position ); if(itemViewType == NORMAL){ NormalViewHolder normalViewHolder = (NormalViewHolder) holder; normalViewHolder.normal_title.setText(dataBean.getTitle()); Glide.with(context).load(imageSplice+dataBean.getPics().get(0)).into(normalViewHolder.normal_img); //接口判断条目删除 normalViewHolder.itemView.setOnLongClickListener( new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { if(mOnItemClick!= null){ mOnItemClick.onItemLongClick( position ); } return true; } } ); }else if(itemViewType == IMAGES){ ImagesViewHolder imagesViewHolder = (ImagesViewHolder) holder; imagesViewHolder.images_title.setText(dataBean.getTitle()); //图片展示 Glide.with(context).load(imageSplice+dataBean.getPics().get(0)).into(imagesViewHolder.images01); Glide.with(context).load(imageSplice+dataBean.getPics().get(1)).into(imagesViewHolder.images02); Glide.with(context).load(imageSplice+dataBean.getPics().get(2)).into(imagesViewHolder.images03); imagesViewHolder.itemView.setOnLongClickListener( new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { if(mOnItemClick!= null){ mOnItemClick.onItemLongClick( position ); } return true; } } ); } } @Override public int getItemCount() { return list.size(); } @Override public int getItemViewType(int position) { //获取图片 String type = list.get(position).getType(); if("images".equals(type)){ return IMAGES; }else{ return NORMAL; } } class NormalViewHolder extends RecyclerView.ViewHolder { private final TextView normal_title; private final ImageView normal_img; public NormalViewHolder(View itemView) { super(itemView); normal_title = itemView.findViewById(R.id.normal_title); normal_img = itemView.findViewById(R.id.normal_img); normal_img.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(mOnItemClick != null){ mOnItemClick.onImageClick(v); } } }); } } class ImagesViewHolder extends RecyclerView.ViewHolder{ private final ImageView images01; private final ImageView images02; private final ImageView images03; private final TextView images_title; public ImagesViewHolder(View itemView) { super(itemView); images01 = itemView.findViewById(R.id.images01); images02 = itemView.findViewById(R.id.images02); images03 = itemView.findViewById(R.id.images03); images_title = itemView.findViewById(R.id.images_title); images01.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(mOnItemClick != null){ mOnItemClick.onImageClick(v); } } }); images02.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(mOnItemClick != null){ mOnItemClick.onImageClick(v); } } }); images03.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(mOnItemClick != null){ mOnItemClick.onImageClick(v); } } }); } } public interface OnItemClick{ void onImageClick(View view); void onItemLongClick(int position); } private OnItemClick mOnItemClick; public void setOnItemClick( OnItemClick onItemClick){ this.mOnItemClick = onItemClick; } } main.xml布局
<android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recycler"></android.support.v7.widget.RecyclerView>
多条目的xml布局没有写,需要自己重写