首页 > 解决方案 > 如何隐藏某些内容以不显示给 recyclerview

问题描述

我正在研究我作为学习者从某个地方复制的代码。该应用程序在 recyclerview 中显示数据,这些数据来自 firebase 数据库。一切运行良好,数据在 recyclerview 中显示得很好。

我现在担心的是:我在同一个活动中添加了另一个 recyclerview。所以现在我有两个具有这些 ID 的 recyclerview:recyclerview 和 recyclerview2。它们在一个活动中,但在不同的布局中,一次只能看到一个布局,通过单击按钮,它会隐藏一个布局并显示另一个布局。目前,recyclerviews 显示相同的数据。

我现在想要的是:在这些 recyclerviews 中,我有一个 TextView,它会随时间改变文本。它有时会显示此文本“已关闭”。因此,我希望所有具有显示“已关闭”的 textview 的数据都显示在 recyclerview2 上,并且在第一个 recyclerview 上不可用。

所以我的问题是如果textview显示'CLOSED'并且我希望recyclerview2仅显示具有显示此文本'CLOSED'的textview的数据,则使数据不显示在recyclerview(第一个)上

我不知道从哪里开始。下面是我想要添加代码的 MainActivity.java。

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView, recyclerView2;
    private DatabaseReference mDatabase, vDatabase;
    private FirebaseAuth mAuth;
    private FirebaseAuth.AuthStateListener mAuthListener;


    TextView rtrratio, rtrratiopercentage, tppipss, slpipss, commenting, entry, tp, sl, tv1, tv2, tv3;
    RelativeLayout rSignals, rCalendar, rLessons, rServices, rContact;
    ImageButton imsignals, imcalendar, imlessons, imservices, imcontact;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.content_main);

        //defining main buttons (Image buttons)
        imsignals = (ImageButton) findViewById(R.id.im_signals_id);
        imcalendar = (ImageButton) findViewById(R.id.im_calendar_id);
        imlessons = (ImageButton) findViewById(R.id.im_lessons_id);
        imservices = (ImageButton) findViewById(R.id.im_services_id);
        imcontact = (ImageButton) findViewById(R.id.im_contact_id);


        //defining textviews
        entry = (TextView) findViewById(R.id.entry);
        tppipss = (TextView) findViewById(R.id.tpp);
        slpipss = (TextView) findViewById(R.id.slp);
        rtrratio = (TextView) findViewById(R.id.riskreward);
        rtrratiopercentage = (TextView) findViewById(R.id.rrewardp);
        commenting = (TextView) findViewById(R.id.comment);
        tp = (TextView) findViewById(R.id.tp);
        sl = (TextView) findViewById(R.id.sl);


        //bottom navigation
        BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);

        //button definitions
        Button btnRunning = (Button) findViewById(R.id.sRunning);
        Button btnPending = (Button) findViewById(R.id.sPending);
        Button btnClosed = (Button) findViewById(R.id.sClosed);

        //layouts definitions for bottom navigation
        rSignals = (RelativeLayout) findViewById(R.id.rlsignals);
        rCalendar = (RelativeLayout) findViewById(R.id.rlcalendar);
        rLessons = (RelativeLayout) findViewById(R.id.rllessons);
        rServices = (RelativeLayout) findViewById(R.id.rlservices);
        rContact = (RelativeLayout) findViewById(R.id.rlcontact);

        //layouts definitions for signals layout
        final RelativeLayout rRunning = (RelativeLayout) findViewById(R.id.rlRunning);
        final LinearLayout rPending = (LinearLayout) findViewById(R.id.rlHistory);
        final LinearLayout rClosed = (LinearLayout) findViewById(R.id.rlRating);


        //initialize recyclerview and FIrebase objects
        //for running signals
        recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setHasFixedSize(true);
        //for closed signals
        recyclerView2 = (RecyclerView) findViewById(R.id.recyclerview2);
        recyclerView2.setLayoutManager(new LinearLayoutManager(this));
        recyclerView2.setHasFixedSize(true);

        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        linearLayoutManager.setReverseLayout(true);
        linearLayoutManager.setStackFromEnd(true);
        //for running signals
        recyclerView.setLayoutManager(linearLayoutManager);
        //for closed signals
        recyclerView.setLayoutManager(linearLayoutManager);

        //for signals get child as Blogzone
        mDatabase = FirebaseDatabase.getInstance().getReference().child("Blogzone");
        mAuth = FirebaseAuth.getInstance();
        mAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                if (mAuth.getCurrentUser() == null) {
                    Intent loginIntent = new Intent(MainActivity.this, RegisterActivity.class);
                    loginIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                    startActivity(loginIntent);
                }
            }
        };


    /////////////////////////////////////////////////////////////////////////////////////////////
    //signals
    @Override
    protected void onStart() {
        super.onStart();
        mAuth.addAuthStateListener(mAuthListener);
        FirebaseRecyclerAdapter<Blogzone, BlogzoneViewHolder> FBRA = new FirebaseRecyclerAdapter<Blogzone, BlogzoneViewHolder>(
                Blogzone.class,
                R.layout.card_items,
                BlogzoneViewHolder.class,
                mDatabase

        ) {
            @Override
            protected void populateViewHolder(BlogzoneViewHolder viewHolder, Blogzone model, int position) {
                final String post_key = getRef(position).getKey().toString();
                viewHolder.setPair(model.getPair());
                viewHolder.setBuySell(model.getBuysell());
                viewHolder.setOpenPrice(model.getOpenprice());
                viewHolder.setTakeProfit(model.getTakeprofit());
                viewHolder.setStopLoss(model.getStoploss());
                viewHolder.setProfitPips(model.getProfitpips());
                viewHolder.setLossPips(model.getLosspips());
                viewHolder.setComment(model.getComment());
                viewHolder.setResult(model.getResult());
                viewHolder.setRewarding(model.getRewarding());
                viewHolder.setRewardingP(model.getRewardingP());
                //viewHolder.setImageUrl(getApplicationContext(), model.getImageUrl());
                //viewHolder.setUserName(model.getUsername());
                viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        //   Intent singleActivity = new Intent(MainActivity.this, SinglePostActivity.class);
                        //   singleActivity.putExtra("PostID", post_key);
                        //   startActivity(singleActivity);
                    }
                });
            }
        };
        //running signals
        recyclerView.setAdapter(FBRA);
        //closed signals
        recyclerView2.setAdapter(FBRA);
    }

    public static class BlogzoneViewHolder extends RecyclerView.ViewHolder {
        View mView;

        public BlogzoneViewHolder(View itemView) {
            super(itemView);
            mView = itemView;
        }

        public void setPair(String pair) {
            TextView post_pair = mView.findViewById(R.id.quote);
            post_pair.setText(pair);
        }

        public void setBuySell(String buySell) {
            TextView post_buysell = mView.findViewById(R.id.type);
            post_buysell.setText(buySell);
        }

        public void setOpenPrice(String openPrice) {
            TextView post_openprice = mView.findViewById(R.id.entry);
            post_openprice.setText(openPrice);
        }

        public void setTakeProfit(String takeProfit) {
            TextView post_takeprofit = mView.findViewById(R.id.tp);
            post_takeprofit.setText("Tp: " + takeProfit);
        }

        public void setStopLoss(String stopLoss) {
            TextView post_stoploss = mView.findViewById(R.id.sl);
            post_stoploss.setText("Sl: " + stopLoss);
        }

        public void setProfitPips(String profitPips) {
            //nothing
        }

        public void setLossPips(String lossPips) {
            //nothing
        }

        public void setRewardingP(String comment) {
            //nothing
        }

        public void setComment(String comment) {
        //nothing
        }

        public void setRewarding(String rewarding) {
        //nothing
        }

        public void setResult(String result) {
            TextView post_result = mView.findViewById(R.id.status);
            post_result.setText("result");
            if (!post_result.getText().toString().trim().matches("Take Profit Hit")) {
                post_result.setTextColor(Color.parseColor("#ffcc0000"));
            } else if (!post_result.getText().toString().trim().matches("Stop Loss Hit")) {
                post_result.setTextColor(Color.parseColor("#ff669900"));
            } else if (!post_result.getText().toString().trim().matches("Pending...")) {
                post_result.setTextColor(Color.parseColor("#000"));
            } else {
                post_result.setTextColor(Color.parseColor("#ffffff"));
            }
        }
    }}

帮助我堆栈!

标签: javaandroid-studioandroid-recyclerview

解决方案


List<Blogzone> openedZones = new ArrayList<>();
List<Blogzone> closedZones = new ArrayList<>();

openedZones.addAll(mDatabase.stream().filter(zone -> zone.isOpened()).collect(Collectors.toList()));
closedZones.addAll(mDatabase.stream().filter(zone -> zone.isClosed()).collect(Collectors.toList()));

FirebaseRecyclerAdapter<Blogzone, BlogzoneViewHolder> FBRAopened = new FirebaseRecyclerAdapter<Blogzone, BlogzoneViewHolder>(
    Blogzone.class,
    R.layout.card_items,
    BlogzoneViewHolder.class,
    openedZones
) {
    ...
}
        
FirebaseRecyclerAdapter<Blogzone, BlogzoneViewHolder> FBRAclosed = new FirebaseRecyclerAdapter<Blogzone, BlogzoneViewHolder>(
    Blogzone.class,
    R.layout.card_items,
    BlogzoneViewHolder.class,
    closedZones
) {
    ...
}
        
//running signals
recyclerView.setAdapter(FBRAopened);
//closed signals
recyclerView2.setAdapter(FBRAclosed);

推荐阅读