我正在制作一个壁纸应用。而且我在某个地方卡住了。

huangapple 未分类评论48阅读模式
英文:

I am making an wallpaper app. And I am stuck somewhere

问题

我无法创建一个RecyclerView的OnItemClickListener以便我可以为所有的壁纸实现点击功能我已经使用了带有CardView的RecyclerView来加载图片并且取得了成功我是一个Android开发和Java方面的初学者如果有人能帮助我我会非常高兴谢谢

package fragments;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.example.flauntywalls.R;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.database.annotations.Nullable;

import java.util.ArrayList;
import java.util.List;

import adapters.CategoriesAdapter;
import models.Category;

public class class_s10 extends Fragment {

    private List<Category> categoryList;
    private ProgressBar progressBar;
    private DatabaseReference dbCategories;
    private RecyclerView recyclerView;
    private CategoriesAdapter adapter;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.s10_frag, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        progressBar = view.findViewById(R.id.progress_bar);
        progressBar.setVisibility(View.VISIBLE);
        recyclerView = view.findViewById(R.id.recycler_view);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 3));
        categoryList = new ArrayList<>();
        adapter = new CategoriesAdapter(getActivity(), categoryList);
        recyclerView.setAdapter(adapter);

        String category="S10";
        dbCategories = FirebaseDatabase.getInstance().getReference("images").child(category);
        dbCategories.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()) {
                    progressBar.setVisibility(View.GONE);
                    for (DataSnapshot ds : dataSnapshot.getChildren()) {
                        Category w = ds.getValue(Category.class);
                        categoryList.add(w);
                    }
                    adapter.notifyDataSetChanged();
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }
}

以下是CategoriesAdapter的代码:

package adapters;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.example.flauntywalls.R;
import com.example.flauntywalls.activities.wallpaper_load;

import java.util.List;

import models.Category;

public class CategoriesAdapter extends RecyclerView.Adapter<CategoriesAdapter.ImageViewHolder> {
   private Context mCtx;
   private List<Category> imageslist;

    public CategoriesAdapter(Context mCtx, List<Category> imageslist) {
        this.mCtx = mCtx;
        this.imageslist = imageslist;
    }

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

    @Override
    public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) {
        Category images = imageslist.get(position);
        Glide.with(mCtx).load(images.url).into(holder.imageView);
    }

    @Override
    public int getItemCount() {
        return imageslist.size();
    }

    class ImageViewHolder extends RecyclerView.ViewHolder {
       ImageView imageView;
        public ImageViewHolder(@NonNull View itemView) {

            super(itemView);
            imageView = itemView.findViewById(R.id.image_view);
        }
    }
}
英文:

I am not able to create a recyclerview.OnItemClickListener so that I can implement clicks for all the wallpapers. I have used recycler view with cardview for loading the images and it has been successful. I am a beginner in android development and also in Java. I would be very happy if someone can help me with it. Thank you.

package fragments;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.example.flauntywalls.R;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.database.annotations.Nullable;

import java.util.ArrayList;
import java.util.List;

import adapters.CategoriesAdapter;
import models.Category;

/**
 * Created by Belal on 4/20/2018.
 */

public class class_s10 extends Fragment {

    private List&lt;Category&gt; categoryList;
    private ProgressBar progressBar;
    private DatabaseReference dbCategories;
    private RecyclerView recyclerView;
    private CategoriesAdapter adapter;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.s10_frag, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        progressBar = view.findViewById(R.id.progress_bar);
        progressBar.setVisibility(View.VISIBLE);
        recyclerView = view.findViewById(R.id.recycler_view);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 3));
        categoryList = new ArrayList&lt;&gt;();
        adapter = new CategoriesAdapter(getActivity(), categoryList);
        recyclerView.setAdapter(adapter);

        String category=&quot;S10&quot;;
        dbCategories = FirebaseDatabase.getInstance().getReference(&quot;images&quot;).child(category);
        dbCategories.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()) {
                    progressBar.setVisibility(View.GONE);
                    for (DataSnapshot ds : dataSnapshot.getChildren()) {
                        Category w= ds.getValue(Category.class);
                        categoryList.add(w);
                    }
                    adapter.notifyDataSetChanged();
                }
            }



            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });


    }
}

Below is the code for CategoriesAdapter:

package adapters;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.example.flauntywalls.R;
import com.example.flauntywalls.activities.wallpaper_load;

import java.util.List;

import models.Category;

public class CategoriesAdapter extends RecyclerView.Adapter&lt;CategoriesAdapter.ImageViewHolder&gt; {
   private Context mCtx;
   private List&lt;Category&gt; imageslist;

    public CategoriesAdapter(Context mCtx, List&lt;Category&gt; imageslist) {
        this.mCtx = mCtx;
        this.imageslist = imageslist;
    }



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

    @Override
    public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) {
Category images=imageslist.get(position);
        Glide.with(mCtx).load(images.url).into(holder.imageView);
    }

    @Override
    public int getItemCount() {
        return imageslist.size();
    }

    class ImageViewHolder extends RecyclerView.ViewHolder{
       ImageView imageView;
        public ImageViewHolder(@NonNull View itemView) {

            super(itemView);
            imageView=itemView.findViewById(R.id.image_view);
        }
    }
}

答案1

得分: 0

我建议在使用点击监听器时使用ListView,但如果你需要使用RecyclerView或者ListView,你必须使用OnItemClickListener,例如:

recycleview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        // 例如执行某些操作,比如跳转到另一个活动

        Intent intent = new Intent(Activity.this, secondActivity.class);
        startActivity(intent);
    }
});

如果上述内容有错误,请告诉我,并提供你的LogCat日志!

英文:

I recommend using a listview when using click listeners but if you need a recycle view or a listview you must use OnItemClickListener for ex:

recycleview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) {

                    //Any action for example going to another activity

                   Intent intent = new Intent(Activity.this,secondActivity.class);
                    startActivity(intent);


                }
            });

If there is an error in the above just tell me,and post your logcat!

huangapple
  • 本文由 发表于 2020年5月4日 21:56:55
  • 转载请务必保留本文链接:https://java.coder-hub.com/61593981.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定