简体   繁体   English

RecyclerView无法单击,不起作用

[英]RecyclerView can't click , doesn't work

The main problem is that recyclerview is not clickable. 主要问题是recyclerview不可点击。 But I might use the wrong way to delete "!" 但是我可能使用错误的方式删除“!” when intent to the next pages, which is map. 意向下一页时,即地图。 If I do this way the map only shows one user marker, but it is supposed to show two markers. 如果我这样做,地图将仅显示一个用户标记,但应该显示两个标记。

In ListOnline.java 在ListOnline.java中

private void updateList() {
    adapter = new FirebaseRecyclerAdapter<User, ListOnlineViewHolder>(
        User.class,
        R.layout.user_layout,
        ListOnlineViewHolder.class,
        counterRef
    ){

        @Override
        protected void populateViewHolder(ListOnlineViewHolder viewHolder, final User model, int position) {
            viewHolder.txtEmail.setText(model.getEmail());

            // item click recycler view
            viewHolder.itemClickListenener = new ItemClickListenener() {
                @Override
                public void onClick(View view, int position) {
                    //if model is current user , not set click event

                    if(!model.getEmail().equals(FirebaseAuth.getInstance().getCurrentUser().getEmail()))
                    {
                        Intent map = new Intent(ListOnline.this, MapTracking.class);
                        map.putExtra("email",FirebaseAuth.getInstance().getCurrentUser().getEmail());
                        map.putExtra("lat",mLastLocation.getLatitude());
                        map.putExtra("lng",mLastLocation.getLongitude());
                        startActivity(map);
                    }
                }
            };
        }
    };
    adapter.notifyDataSetChanged();
    listOnline.setAdapter(adapter);
}

After I change like this , i can be clickable but cant receive the friend marker. 这样更改后,我可以单击但无法收到朋友标记。

if(model.getEmail().equals(FirebaseAuth.getInstance().getCurrentUser().getEmail()))

means, i delete the '!' 表示我删除了“!” it can be intent to google map. 它可能是谷歌地图的意图。

In ListOnlineViewHolder.java 在ListOnlineViewHolder.java中

public class ListOnlineViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
    public TextView txtEmail;
    ItemClickListenener itemClickListenener;

    public ListOnlineViewHolder(View itemView) {
        super(itemView);
        txtEmail = (TextView)itemView.findViewById(R.id.txt_email);
        itemView.setOnClickListener(this);
    }

    public void setItemClickListenener(ItemClickListenener itemClickListenener){
        this.itemClickListenener = itemClickListenener;
    }

    @Override
    public void onClick(View view) {
        itemClickListenener.onClick(view,getAdapterPosition());
    }}

In ItemClickListenener Interface 在ItemClickListenener界面中

public interface ItemClickListenener {
    void onClick(View view, int position);
}

In MapTracking 在MapTracking中

 private void loadLocationForThisUser(String email) {
        Query user_location = locations.orderByChild("email").equalTo(email);

        user_location.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for(DataSnapshot postSnapShot:dataSnapshot.getChildren())
                {
                    Tracking tracking = postSnapShot.getValue(Tracking.class);

                    //add marker for friend location
                    LatLng friendLocation = new LatLng(Double.parseDouble(tracking.getLat()),
                            Double.parseDouble(tracking.getLng()));

                    //create location from user coordinates
                    Location currentUser = new Location("");
                    currentUser.setLatitude(lat);
                    currentUser.setLongitude(lng);

                    //create location from friend coordinates
                    Location friend = new Location("");
                    friend.setLatitude(Double.parseDouble(tracking.getLat()));
                    friend.setLongitude(Double.parseDouble(tracking.getLng()));

                    //create function calculate distance between location
//                    distance(currentUser,friend);

                    //add friend marker on map
                    mMap.addMarker(new MarkerOptions()
                    .position(friendLocation)
                    .title(tracking.getEmail())
                            .snippet("Distance "+new DecimalFormat("#.#").format( distance(currentUser,friend)))
                    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));
                    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat,lng),12.0f));
                }
                //create marker for current user
                LatLng current = new LatLng(lat,lng);
                mMap.addMarker(new MarkerOptions().position(current).title(FirebaseAuth.getInstance().getCurrentUser().getEmail()));
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }

Please help me, I spent almost a month to solve this project problem. 请帮助我,我花了将近一个月的时间来解决这个项目问题。

Pro, please, help me to see what is the problem, because I'm new to android. 亲,请帮我看看问题出在哪里,因为我是android新手。 I'm most doing in Website server, PHP JAVAscript, HTML.. 我在网站服务器,PHP JAVAscript,HTML中做的最多。

通过删除解决

if(!model.getEmail().equals(FirebaseAuth.getInstance().getCurrentUser().getEmail()))``

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM