RecyclerView的多久条目

需要加依赖,权限

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布局没有写,需要自己重写



猜你喜欢

转载自blog.csdn.net/weixin_41791739/article/details/80472532