[英]How to start another activity from a ImageButton that it's inside into a RecyclerView?
I'm making an Android Studio project, for that I made a RecyclerView for the shopping list and everything was OK but now I need that when the customer clicks on a category, start the personal activity for that option.我正在制作一个 Android Studio 项目,为此我为购物清单制作了一个 RecyclerView 并且一切正常,但现在我需要在客户单击类别时启动该选项的个人活动。 The problem is that when I linked the customized activity for "Bebidas", all the buttons were involved.
问题是,当我链接“Bebidas”的自定义活动时,所有按钮都涉及。 How can I make that only the category "Bebidas" can read that activity?
我怎样才能使只有“Bebidas”类别可以阅读该活动? I hope someone can help me.
我希望有一个人可以帮助我。 Thanks.
谢谢。
Here is the MainActivity:这是主要活动:
public class CategoriasActivity extends AppCompatActivity {
ArrayList<Categorias> listaCategorias;
RecyclerView recyclerCategorias;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_categorias);
listaCategorias=new ArrayList<>();
recyclerCategorias =(RecyclerView) findViewById(R.id.recyclerid);
//recycler.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
recyclerCategorias.setLayoutManager(new GridLayoutManager(this,2));
llenarCategorias();
AdaptadorCategorias adapter=new AdaptadorCategorias(listaCategorias);
adapter.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
Toast.makeText(getApplicationContext(), "Selección: "+listaCategorias.get(recyclerCategorias.getChildAdapterPosition(view)).getNombre(), Toast.LENGTH_SHORT).show();
}
});
recyclerCategorias.setAdapter(adapter);
}
private void llenarCategorias(){
listaCategorias.add(new Categorias("Congelados",R.drawable.congelados));
listaCategorias.add(new Categorias("Bebidas", R.drawable.bebida));
listaCategorias.add(new Categorias("Panadería", R.drawable.panaderia));
listaCategorias.add(new Categorias("Pastelería", R.drawable.pasteleria));
}
public void onclick(View view) {
Intent intent=new Intent(getApplicationContext(), BebidasActivity.class);
startActivity(intent);
}
} }
Here is the class:这是课程:
public class Categorias {
private String nombre;
//private String info;
private int foto;
public Categorias(String nombre, int foto){ //String info
this.nombre = nombre;
//this.info = info;
this.foto = foto;
}
public Categorias(){
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
/*public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}*/
public int getFoto() {
return foto;
}
public void setFoto(int foto) {
this.foto = foto;
}
} }
Here is the adapter:这是适配器:
public class AdaptadorCategorias
extends RecyclerView.Adapter<AdaptadorCategorias.ViewHolderCategorias>implements View.OnClickListener {
ArrayList<Categorias> listaCategorias;
private View.OnClickListener listener;
public AdaptadorCategorias(ArrayList<Categorias> listaCategorias) {
this.listaCategorias = listaCategorias;
}
@Override
public ViewHolderCategorias onCreateViewHolder(ViewGroup parent, int viewType) {
View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.categorias_list, null, false);
view.setOnClickListener(this);
return new ViewHolderCategorias(view);
}
@Override
public void onBindViewHolder(ViewHolderCategorias holder, int position) {
//Asignamos los valores correspondientes a cada TextView
holder.nombre.setText(listaCategorias.get(position).getNombre());
//holder.info.setText(listaCategorias.get(position).getInfo());
holder.idImagen.setImageResource(listaCategorias.get(position).getFoto());
//Asignar eventos a los botones
}
@Override
public int getItemCount() {
return listaCategorias.size();
}
public void setOnClickListener(View.OnClickListener listener){
this.listener=listener;
}
@Override
public void onClick(View view) {
if (listener!=null){
listener.onClick(view);
}
}
public class ViewHolderCategorias extends RecyclerView.ViewHolder {
TextView nombre; //, info;
ImageButton idImagen;
public ViewHolderCategorias(View itemView) {
super(itemView);
nombre=(TextView) itemView.findViewById(R.id.idNombre);
//info=(TextView) itemView.findViewById(R.id.idInfo);
idImagen=(ImageButton) itemView.findViewById(R.id.idImagen);
}
}
} }
Here the xml of the RecyclerView:这里是 RecyclerView 的 xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageButton
android:id="@+id/idImagen"
android:layout_width="112dp"
android:layout_height="111dp"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:background="@android:color/transparent"
android:src="@drawable/bebida"
android:onClick="onclick"/>
<TextView
android:id="@+id/idNombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Bebidas"
android:textSize="20sp"
android:textStyle="bold"
android:layout_marginBottom="10dp"/>
Here is the activity_main.xml:这是activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageButton
android:id="@+id/idImagen"
android:layout_width="112dp"
android:layout_height="111dp"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:background="@android:color/transparent"
android:src="@drawable/bebida"
android:onClick="onclick"/>
<TextView
android:id="@+id/idNombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Bebidas"
android:textSize="20sp"
android:textStyle="bold"
android:layout_marginBottom="10dp"/>
IN ADAPTER 在适配器中
private OnItemClickListener onItemClickListener;
@Override
public ViewHolderCategorias onCreateViewHolder(ViewGroup parent, int viewType) {
View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.categorias_list, null, false);
ViewHolderCategorias viewHolderCategorias = new ViewHolderCategorias(view);
// view.setOnClickListener(this);
viewHolderCategorias.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onItemClickListener != null) onItemClickListener.onItemClick(holder); //use CALL BACK
}
});
viewHolderCategorias.idImagen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onItemClickListener != null) onItemClickListener.onButton(holder); //use CALL BACK
}
});
return viewHolderCategorias;
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener) { // Using with activity
this.onItemClickListener = onItemClickListener;
}
public interface OnItemClickListener { // CALL BACK
void onItemClick(RecyclerView.ViewHolder holder);
void onButton(RecyclerView.ViewHolder holder);
}
In ACTIVITY 活动中
adapter = new AnswerSheetAdapter(getContext());
adapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(RecyclerView.ViewHolder holder) {
// do SomeThing
}
@Override
public void onButton(RecyclerView.ViewHolder holder) {
// do SomeThing
}
});
I hope it helps you.!! 希望对您有帮助!!
public class ViewHolderCategorias extends RecyclerView.ViewHolder {
TextView nombre; //, info;
ImageButton idImagen;
public ViewHolderCategorias(View itemView) {
super(itemView);
nombre=(TextView) itemView.findViewById(R.id.idNombre);
//info=(TextView) itemView.findViewById(R.id.idInfo);
idImagen=(ImageButton) itemView.findViewById(R.id.idImagen);
idImagen.setOnClickListener(new OnCLickListener(){
@Override
public void onCLick(View view){
view.getContext().startActivity(new Intent(view.getContext(), NewActivity.class));
}
});
}
}
As per your question you want to make click event of ImageButton which lies in Recyclerview.so,You can take Onclick() event As per below: 根据您的问题,要使ImageButton的click事件位于Recyclerview.so中,您可以按如下方式处理Onclick()事件:
@Override
public void onBindViewHolder(OrderDetailViewAdapter.MyViewHolder holder, int position) {
nombre=(TextView) itemView.findViewById(R.id.idNombre);
idImagen=(ImageButton) itemView.findViewById(R.id.idImagen);
holder.idImagen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//put code of Whatever you want to do
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.