我有一个列表视图,显示一些项目,如文本视图和按钮,我有一个晶圆厂按钮(可见性:消失),是在列表视图。我想知道
如何在用户点击列表项的任何按钮时显示fab按钮,这是我的代码。
xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center">
<ProgressBar
android:id="@+id/progress_bar"
style="?android:progressBarStyle"
android:layout_width="20dp"
android:layout_height="20dp"
android:indeterminate="true"
android:indeterminateTint="@color/txt_color"
android:layout_gravity="center"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_items"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="3dp"
android:visibility="gone"/>
</LinearLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="20dp"
app:fabSize="normal"
app:backgroundTint="@color/txt_color"
app:srcCompat="@drawable/ic_dialog_close_dark"/>
</FrameLayout>
这是我的适配器
@Override
public void onBindViewHolder(final MyView holder, final int position) {
holder.name.setText(obj_productos.get(position).getName());
holder.btn_item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
**//SHOW fab_button**
}
});
}
主活动,在这里我声明我的变量和布局,如回收视图和fab按钮
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
FloatingActionButton fab_button;
RecyclerView rv_items;
Rv_Adapter adapter;
ProgressBar progress_bar;
ProgressDialog progress;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.productos_ctrl);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
fab_button = (FloatingActionButton)findViewById(R.id.fab_button);
rv_items = (RecyclerView)findViewById(R.id.rv_items);
progress_bar = (ProgressBar)findViewById(R.id.progress_bar);
progress = new ProgressDialog(this, R.style.ProgressTheme);
adapter = new Rv_Adapter(this, obj_productos);
rv_items.setLayoutManager(new LinearLayoutManager(this));
rv_items.setAdapter(adapter);
fab_button.setOnClickListener(this);
}
}
你可以使用listenercallback。
1. 在适配器内部或任何地方创建监听器
class MyAdapter {
private Callback callback;
// pass the listener to the constructor
MyAdapter(Callback callback) {
this.callback = callback;
}
@Override
public void onBindViewHolder(final MyView holder, final int position) {
...
holder.btn_item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
callback.someAction(position);
}
});
}
...
public interface Callback {
void someAction(int position);
}
}
2. 在你的ActivityFragment里面
class MyActivity extends AppCompatActivity implements MyAdapter.Callback {
@override
void onCreate(Bundle savedInstanceState) {
...
MyAdapter adapter = MyAdapter(this);
}
@override
void someAction(int position) {
// show fab and other action here
}
}