java - 如何隐藏某些内容以不显示给 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"));
}
}
}}
帮助我堆栈!
解决方案
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);
推荐阅读
- html - 将徽标图像添加到 rails 中的引导导航栏
- google-app-engine - 如何阻止用户查看我在谷歌应用引擎上托管的反应应用暂存环境?
- mysql - 在 MySql 中使用 were 子句进行批量插入
- java - 在类路径上有多个 servlet-api 库时出错
- javascript - 在 d3 库中的可缩放圆包图中添加边
- php - 如何删除字符串中两行之间的特定换行符而不删除其他换行符?php
- javascript - Nuxt 来自 api 的动态路由
- apache-kafka - 使用 localstack 测试 kafka 应用程序
- validation - wxPython 对话框:如何验证多个控件中的输入?
- javascript - primeng p-treeTableToggler 图标已更改,而不是原来的 pi pi-fw pi-chevron-right 图标