RecyclerView....

来源:互联网 发布:室内定位 指纹算法 编辑:程序博客网 时间:2024/06/06 09:43
public class MainActivity extends AppCompatActivity {    private RecyclerView recyclerView;    private List<Carton.DataBean.TopicsBean> list;    private Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            String s = msg.obj.toString();            Gson gson = new Gson();            Carton carton = gson.fromJson(s, Carton.class);            list.addAll(carton.getData().getTopics());        }    };    private MyAdapter adapter;    private SwipeRefreshLayout mswipeRefreshLayout;    private int page = 1;    private LinearLayoutManager manager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initDate();        adapter.setOnItemClickListener(new MyAdapter.MyOnItemClickListener() {            @Override            public void OnItemClickListener(final View view, int position) {                Toast.makeText(MainActivity.this, list.get(position).getTitle(), Toast.LENGTH_SHORT).show();            }        });        //自动加载        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {            @Override            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {                super.onScrollStateChanged(recyclerView, newState);                if (RecyclerView.SCROLL_STATE_IDLE == newState) {                    int lastVisibleItemPosition = manager.findLastVisibleItemPosition();                    if (lastVisibleItemPosition == list.size() - 1) {                        Log.e("----------", "什么鬼");                        page++;                        initDate();                        adapter.notifyDataSetChanged();                    }                }            }        });        mswipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {            @Override            public void onRefresh() {                page++;                initDate();                adapter.notifyDataSetChanged();                mswipeRefreshLayout.setRefreshing(false);            }        });    }    private void initView() {        list = new ArrayList<>();        mswipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh);        recyclerView = (RecyclerView) findViewById(R.id.mRec);        recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));        manager = new LinearLayoutManager(this);        recyclerView.setLayoutManager(manager);        adapter = new MyAdapter(MainActivity.this, list);    }    private void initDate() {        recyclerView.setAdapter(adapter);        new Thread() {            @Override            public void run() {                String urlConnect = Net.getUrlConnect("http://api.kkmh.com/v1/topic_new/discovery_module_list/210?limit=3&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3OTE2MTcwNjE5LCJwcm9wZXJ0aWVzIjp7IiRvc192ZXJzaW9uIjoiNC4yLjIiLCJHZW5kZXJUeXBlIjoi5peg5rOV6I635Y-WIiwiVHJpZ2dlckl0ZW0iOjE3LCJWaXNpdFBhZ2VOYW1lIjoi5paw5L2c5LiK5p62IiwiJGxpYl92ZXJzaW9uIjoiMS42LjM0IiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6InNhbXN1bmciLCJUcmlnZ2VySXRlbU5hbWUiOiLmlrDkvZzkuIrmnrYiLCIkc2NyZWVuX2hlaWdodCI6NTc2LCJMaXN0VHlwZSI6IuaXp-eJiCIsIlByb3BlcnR5RXZlbnQiOiJSZWFkTGlzdCIsIlRyaWdnZXJPcmRlck51bWJlciI6MCwiRmluZFRhYk5hbWUiOiLmjqjojZAiLCJhYnRlc3RfZ3JvdXAiOjQ2LCIkc2NyZWVuX3dpZHRoIjoxMDI0LCIkb3MiOiJBbmRyb2lkIiwiVHJpZ2dlckl0ZW1UeXBlIjowLCJUcmlnZ2VyUGFnZSI6IkZpbmRQYWdlIiwiJGNhcnJpZXIiOiJDTUNDIiwiJG1vZGVsIjoiR1QtUDUyMTAiLCIkYXBwX3ZlcnNpb24iOiIzLjguMSJ9LCJ0eXBlIjoidHJhY2siLCJkaXN0aW5jdF9pZCI6IkE6OTA1MTA0Mjc2Mzc1NTEwOSIsIm9yaWdpbmFsX2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5IiwiZXZlbnQiOiJSZWFkTGlzdCJ9&style=3&offset=" + page);                Message message = Message.obtain();                message.obj = urlConnect;                handler.sendMessage(message);            }        }.start();    }}
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {    private List<Carton.DataBean.TopicsBean> mlist;    private Context mcontext;    private MyOnItemClickListener itemClickListener;    private MyOnItemLongClickListener itemLongClickListener;    private static final int TYPE_ITEM = 0;    private static final int TYPE_FOOTER = 1;    public interface MyOnItemClickListener {        void OnItemClickListener(View view, int position);    }    public interface MyOnItemLongClickListener {        void OnItemLongClickListener(View view, int position);    }    public MyAdapter(MainActivity context, List<Carton.DataBean.TopicsBean> list) {        this.mlist = list;        this.mcontext = context;    }    @Override    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(mcontext).inflate(R.layout.item, parent, false);        ViewHolder holder = new ViewHolder(view);        return holder;    }    @Override    public void onBindViewHolder(final MyAdapter.ViewHolder holder, int position) {        Carton.DataBean.TopicsBean bean = mlist.get(position);        holder.mTextView.setText(bean.getDescription());        Glide.with(mcontext).load(bean.getCover_image_url()).into(holder.mImageView);        if (itemClickListener != null) {            holder.itemView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    itemClickListener.OnItemClickListener(holder.itemView, holder.getLayoutPosition());                }            });            if (itemLongClickListener != null) {                holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {                    @Override                    public boolean onLongClick(View v) {                        itemLongClickListener.OnItemLongClickListener(holder.itemView, holder.getLayoutPosition());                        return true;                    }                });            }        }        holder.mImageView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("alpha", 1f,                        0f, 1f);                PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("scaleX", 1f,                        0, 1f);                PropertyValuesHolder pvhZ = PropertyValuesHolder.ofFloat("scaleY", 1f,                        0, 1f);                ObjectAnimator.ofPropertyValuesHolder(v, pvhX, pvhY, pvhZ).setDuration(1000).start();            }        });    }    public void setOnItemClickListener(MyOnItemClickListener itemClickListener) {        this.itemClickListener = itemClickListener;    }    public void setOnItemLongClickListener(MyOnItemLongClickListener itemLongClickListener) {        this.itemLongClickListener = itemLongClickListener;    }    @Override    public int getItemCount() {        return mlist == null ? 0 : mlist.size();    }    @Override    public int getItemViewType(int position) {        if (position + 1 == getItemCount()) {            return TYPE_FOOTER;        } else {            return TYPE_ITEM;        }    }    public class ViewHolder extends RecyclerView.ViewHolder {        private TextView mTextView;        private ImageView mImageView;        public ViewHolder(View itemView) {            super(itemView);            mTextView = (TextView) itemView.findViewById(R.id.mtext);            mImageView = (ImageView) itemView.findViewById(R.id.mimage);        }    }}
 
原创粉丝点击