首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何利用firebase数据库开发回收视图中的新活动

如何利用firebase数据库开发回收视图中的新活动
EN

Stack Overflow用户
提问于 2021-05-20 02:29:54
回答 1查看 59关注 0票数 0

我在android工作室创建了一个食谱应用程序,包括鸡肉、猪肉、牛肉等类别和子类别。但是,当我单击类别而不传递相同的数据时,我仍然不知道如何为我的子类别打开新的活动。顺便说一句,我的数据库使用的是回收视图和防火墙。希望有人能帮忙!谢谢

MainActivity.class

公共类MainActivity扩展AppCompatActivity {

代码语言:javascript
运行
复制
RecyclerView recyclerView;
MainAdapter mainAdapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    recyclerView = (RecyclerView)findViewById(R.id.recView);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    FirebaseRecyclerOptions<MainModel> options =
            new FirebaseRecyclerOptions.Builder<MainModel>()
                    .setQuery(FirebaseDatabase.getInstance().getReference().child("category"), MainModel.class)
                    .build();

    mainAdapter = new MainAdapter(options);
    recyclerView.setAdapter(mainAdapter);
}

@Override
protected void onStart() {
    super.onStart();
    mainAdapter.startListening();
}

@Override
protected void onStop() {
    super.onStop();
    mainAdapter.stopListening();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.search,menu);
    MenuItem item = menu.findItem(R.id.search);
    SearchView searchView = (SearchView)item.getActionView();

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            txtSearch(query);
            return false;
        }

        @Override
        public boolean onQueryTextChange(String query) {
            txtSearch(query);
            return false;
        }
    });

    return super.onCreateOptionsMenu(menu);
}

private void txtSearch(String str)
{
    FirebaseRecyclerOptions<MainModel> options =
            new FirebaseRecyclerOptions.Builder<MainModel>()
                    .setQuery(FirebaseDatabase.getInstance().getReference().child("category").orderByChild("name").startAt(str).endAt(str+"~"), MainModel.class)
                    .build();

    mainAdapter = new MainAdapter(options);
    mainAdapter.startListening();
    recyclerView.setAdapter(mainAdapter);
}

}

MainAdapter.class

公共类MainAdapter扩展FirebaseRecyclerAdapter {

代码语言:javascript
运行
复制
/**
 * Initialize a {@link RecyclerView.Adapter} that listens to a Firebase query. See
 * {@link FirebaseRecyclerOptions} for configuration options.
 *
 * @param options
 */
public MainAdapter(@NonNull FirebaseRecyclerOptions<MainModel> options) {
    super(options);
}

@Override
protected void onBindViewHolder(@NonNull MainAdapter.myViewHolder holder, int position, @NonNull MainModel model) {

    holder.categoryName.setText(model.getName());
    holder.categoryDesc.setText(model.getDescription());

    Glide.with(holder.categoryImage.getContext())
            .load(model.getImage())
            .placeholder(R.drawable.common_google_signin_btn_icon_dark)
            .error(R.drawable.common_google_signin_btn_icon_dark_normal)
            .into(holder.categoryImage);
}

@NonNull

@Override
public myViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.main_item,parent,false);
    return new myViewHolder(view);
}

class myViewHolder extends RecyclerView.ViewHolder{

    ImageView categoryImage;
    TextView categoryName, categoryDesc;


    public myViewHolder(@NonNull View itemView) {
        super(itemView);

        categoryImage = (ImageView)itemView.findViewById(R.id.categoryImage);
        categoryName = (TextView)itemView.findViewById(R.id.categoryName);
        categoryDesc = (TextView)itemView.findViewById(R.id.categoryDesc);

    }
}

}

MainModel.class

公共类MainModel {

代码语言:javascript
运行
复制
String name,description,image;

MainModel()
{

}

public MainModel(String name, String description, String image) {
    this.name = name;
    this.description = description;
    this.image = image;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}

public String getImage() {
    return image;
}

public void setImage(String image) {
    this.image = image;
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-20 03:39:36

将此添加到适配器的OnBindviewHolder方法中

代码语言:javascript
运行
复制
 context = holder.itemView.getContext();

holder.itemView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent i = new Intent(context, YourActivity.class);
        context.startActivity(i);
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67613167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档