java - 单击listview项目android studio后显示fab按钮
问题描述
我有一个列表视图,它显示一些项目,如 textview 和按钮,我有一个在列表视图上的 fab 按钮(可见性:消失)。我想知道
当用户单击列表项的任何按钮时,如何显示 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);
}
}
解决方案
您可以使用侦听器/回调。
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. 在你的 Activity/Fragment 中
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
}
}
推荐阅读
- css - Bootstrap 4 - 无法获取我的
- c++ - C ++ fstream没有从文件中读取下一行
- r - 从 R 中的 read_line() 函数打印代码时删除括号和哈希
- java - Olingo v4 + log4j2
- powerquery - Power Query M:组内运行总计
- neo4j - Neo4j 查询结合来自 Elasticsearch 的数据以获得基于时间的图
- html - 使用 CSS 设置默认下拉选项的样式
- ruby-on-rails - Hartl 的 Rails 教程将 db 太多数据播种到 heroku
- python - 使用 2 个 Pandas DF 插入与出现的列值关联的值
- java - 如何在 Android 中的 Activity 之间切换时保存数据