zoukankan      html  css  js  c++  java
  • 冲刺九

    今天是冲刺的第九天,主要实现了用户收藏笔记列表界面的构造

    遇到的困难:recyclerView做简单列表不如listView好。

    解决思路:listView用的不熟,为了保险,采用recyclerView代替listView了,。

    明天计划完成的任务:实现用户收藏笔记删除

    附上编写代码:

    Note_look.java

    package com.itheima.cloudnotes.Activity;
    
    import android.annotation.SuppressLint;
    import android.content.SharedPreferences;
    import android.os.Bundle;
    import android.os.StrictMode;
    
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.recyclerview.widget.LinearLayoutManager;
    import androidx.recyclerview.widget.RecyclerView;
    import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
    
    import com.itheima.cloudnotes.R;
    import com.itheima.cloudnotes.adapter.LoadMoreWrapper;
    import com.itheima.cloudnotes.adapter.Note_collect;
    import com.itheima.cloudnotes.db.DBService;
    import com.itheima.cloudnotes.enity.Note;
    import com.itheima.cloudnotes.listener.EndlessRecyclerOnScrollListener;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Timer;
    import java.util.TimerTask;
    
    public class Note_look extends AppCompatActivity {
    
        private List<Note> noteCollectList=new ArrayList<>();
        private SwipeRefreshLayout srl;
        private RecyclerView recyclerView;
        private LoadMoreWrapper loadMoreWrapper;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_note_look);
            StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
            init();
            upMore();
            downFresh();
        }
    
        public void init()
        {
            initCollectNotes();
            recyclerView=findViewById(R.id.recycler_notecollect);
            LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
            recyclerView.setLayoutManager(linearLayoutManager);
            Note_collect note_collect=new Note_collect(noteCollectList);
            loadMoreWrapper=new LoadMoreWrapper(note_collect);
            recyclerView.setAdapter(loadMoreWrapper);
        }
    
        public void upMore()
        {
            // 设置加载更多监听
            recyclerView.addOnScrollListener(new EndlessRecyclerOnScrollListener() {
                @Override
                public void onLoadMore() {
                    loadMoreWrapper.setLoadState(loadMoreWrapper.LOADING);
    
                    if (noteCollectList.size()<20) {
                        // 模拟获取网络数据,延时1s
                        new Timer().schedule(new TimerTask() {
                            @Override
                            public void run() {
                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        initCollectNotes();
                                        loadMoreWrapper.setLoadState(loadMoreWrapper.LOADING_COMPLETE);
                                    }
                                });
                            }
                        }, 1000);
                    } else {
                        // 显示加载到底的提示
                        loadMoreWrapper.setLoadState(loadMoreWrapper.LOADING_END);
                    }
                }
            });
        }
    
        @SuppressLint("ResourceAsColor")
        public void downFresh()
        {
            srl=findViewById(R.id.notecollect_refresh);//获取SwipeRefreshLayout实例
            srl.setColorSchemeColors(R.color.colorPrimary);//设置刷新进度颜色
            srl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener( ) {
                @Override
                public void onRefresh()
                {
                    new Thread(new Runnable( )
                    {
                        @Override
                        public void run()
                        {
                            initCollectNotes();
                            //切回主线程
                            runOnUiThread(new Runnable( ) {
                                @Override
                                public void run() {
                                    initCollectNotes();
                                    loadMoreWrapper.notifyDataSetChanged();//通知数据已发生变化
                                    srl.setRefreshing(false);//当刷新结束时隐藏刷新条
                                }
                            });
                        }
    
                    }).start();
    
                }
            });
        }
    
        public void initCollectNotes()
        {
            SharedPreferences pref=    getSharedPreferences("user_id",    MODE_PRIVATE);
            int    userId=pref.getInt("userId",0);
            DBService dbService=DBService.getDbService();
            noteCollectList=dbService.getCollectList(userId);
        }
    
    }

    activity_note_look.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".Activity.Note_look">
    
        <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
            android:id="@+id/notecollect_refresh"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >
    
            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/recycler_notecollect"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center_horizontal|center_vertical"
                >
            </androidx.recyclerview.widget.RecyclerView>
    
        </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
    
    </LinearLayout>

    截图:

  • 相关阅读:
    HTTP/2之服务器推送(Server Push)最佳实践
    QQ空间掉帧率优化实战
    “战术竞技类”外挂打击已开始!揭秘腾讯We Test游戏安全服务新动作!
    你知道android的MessageQueue.IdleHandler吗?
    Hi,腾讯WeTest联合Unity官方打造的性能分析工具UPA,今日全新发布!
    一次触摸,Android到底干了啥
    面向亿万级用户的QQ一般做什么?——兴趣部落的Web同构直出分享
    双十一临近,怎样让买家流畅地秒杀? ——腾讯WeTest独家开放电商产品压测服务
    mybatis-generator 覆盖新增XML
    Jvm 虚拟机
  • 原文地址:https://www.cnblogs.com/weixiao1717/p/13084851.html
Copyright © 2011-2022 走看看