开发者社区> 问答> 正文

带有ClickListener的搜索栏无法搜索到的DetailActivity

我正在尝试打开用户在与Firebase实时数据库一起使用的搜索栏上搜索的相应DetailActivity,但是我不知道如何将点击监听器上的值传递给该活动。到目前为止,我有:

SearchAdapter.Java

    @Override
public void onBindViewHolder(@NonNull SearchViewHolder holder, int position) {

    holder.monName.setText(strPlaceList.get(position));
    holder.monLocation.setText(strLocationList.get(position));
    Glide.with(context).asBitmap().load(strImageList.get(position)).placeholder(R.mipmap.ic_launcher_round).into(holder.monumentImage);


    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (strPlaceList != null){
                Intent intent= new Intent(context,DetailActivity.class);
                intent.putExtra("placeName", "strPlaceList");
                context.startActivity(intent);
            }

        } });

}

DetailActivity.java

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detail);
    ButterKnife.bind(this);

    setupActionBar();

    Intent intent = getIntent();
    String placeName = intent.getStringExtra(EXTRA_DETAIL);

    DetailPresenter presenter = new DetailPresenter(this);
    presenter.getPlaceById(placeName);

    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);

    memoryCamera();

}

我还能在Click侦听器上添加什么,以便打开用户搜索的正确活动?现在,它仅显示没有信息的DetalAcitivity。

更新:

如果有帮助,我的应用程序正尝试获取此HTTP,而该HTTP获得的结果为空。

https://project-4a153.firebaseio.com/Monuments/null.json (131ms)

DetailPresenter.java

public class DetailPresenter {
private DetailView view;

public DetailPresenter(DetailView view){ this.view = view; }

void getPlaceById(String placeName){

    view.showLoading();

    Utils.getApi().getPlacesByName(placeName+".json").enqueue(new Callback<Places>() {
        @Override
        public void onResponse(@NonNull Call<Places> call,@NonNull Response<Places> response) {
            view.hideLoading();
            if (response.isSuccessful() && response.body() !=null){
                view.setPlace(response.body().getPlaces().get(0));
            }else{
                view.onErrorLoading(response.message());
            }
        }

        @Override
        public void onFailure(@NonNull Call<Places> call,@NonNull Throwable t) {
            view.hideLoading();
            view.onErrorLoading(t.getLocalizedMessage());
        }
    });

  }
}

问题来源:Stack Overflow

展开
收起
montos 2020-03-25 23:36:44 401 0
1 条回答
写回答
取消 提交回答
  • 尝试像这样在SearchAdapter中添加额外的意图:

    intent.putExtra(DetailActivity.EXTRA_DETAIL, strPlaceList.get(position));
    

    附加项的值键必须在两侧相同。

    回答来源:Stack Overflow

    2020-03-25 23:37:01
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
基于 Elasticsearch 电商搜索 立即下载
《开放搜索查询分析服务架构分享》 立即下载
阿里云搜索产品年度升级发布 立即下载