【发布时间】:2020-05-23 02:52:55
【问题描述】:
我有一个 android studio 活动,其中包含一个 RecyclerView、Adapter 和一个位于活动底部的不可见按钮。 RecyclerView 中的每个 itemView 也都有一个 CheckBox。在我的适配器类中,我初始化了我的复选框,并且有类似的东西 - 如果 checkbox.isChecked - 然后 make public static int num = 1 else num = 2;然后将此静态变量发送到我的 Activity_main ,我需要变为可见的底部按钮可以使用 if 语句显示 - if Adapter.num == 1 then button.MakeVisible(true);
问题是它在我的 Oncreate 中,只有在进行活动时才会调用它。发送静态号码没有问题,但活动不会更新以实际显示这一点。我必须重新启动活动才能使按钮真正可见。
适配器类
public static int p = 0;
@Override
public void onBindViewHolder(@NonNull final Adapter.CustomViewHolder holder,
final int position) {
addedCars = new ArrayList<>();
holder.car.setText(mCars.get(position).getCarName());
holder.mCheckBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(holder.mCheckBox.isChecked()){
Log.d("tag1", "checked");
addedCars.add(mCars.get(position));
String x = Integer.toString(addedCars.size());
Log.d("tag1", x );
p = 1;
holder.mButton2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
}
else {
Log.d("tag1", "unchecked");
addedCars.remove(mCars.get(position));
p = 2;
}
}
});
}
Activity_Main 类
public class MainActivity extends AppCompatActivity {
RecyclerView mRecyclerView;
Adapter mAdapter;
RecyclerView.LayoutManager mLayoutManager;
Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRecyclerView = findViewById(R.id.RecyclerView);
mButton = findViewById(R.id.button);
ArrayList<Car> cars = new ArrayList<>();
cars.add(new Car("Toyota"));
cars.add(new Car("Ford"));
cars.add(new Car("Tesla"));
mAdapter = new Adapter(cars);
mRecyclerView.setAdapter(mAdapter);
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setHasFixedSize(true);
if (mAdapter.p == 1){
mButton.setVisibility(View.VISIBLE);
}
}
}
【问题讨论】:
标签: java android android-studio android-recyclerview