我有一个列表视图,其中显示了诸如textview adn按钮之类的某些项目,并且我在列表视图上有一个fab按钮(可见性:gone)。我想知道
当用户单击列表项的任何按钮时,如何显示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**
}
});
}
主要活动,在这里我声明我的变量和布局,例如recyclerview和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);
}
}
答案 0 :(得分:0)
您可以使用监听器/回调。
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。在您的活动/片段中
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
}
}