如何点击自定义网格视图图像图标?

问题描述:

我创建了一个包含图像视图和文本视图的自定义网格视图。我想单击这两个视图像点击图像图标以及文本视图。还有一件事是这个自定义网格视图是在片段中实现的。我使用适配器类来设置从Base Adapter类扩展的图标和文本标题。 所以请任何人知道如何实现这个请返回与答案.. 在此先感谢。如何点击自定义网格视图图像图标?

+0

邮编。 @sid –

+0

请将相关代码 –

试试这个,

JAVA:

public class MyAdapter extends BaseAdapter 
{ 
    /* Variable declaration */ 
    private final Context mContext; 
    private final ArrayList<Menu> al_Menu; 
    private Holder viewHolder; 


    public MyAdapter (Context p_context, ArrayList<Menu> al_Menu) 
    { 
     super(); 
     this.mContext = p_context; 
     this.al_Menu = al_Menu; 
    } 

    @Override 
    public int getCount() 
    { 
     return al_Menu.size(); 
    } 

    @Override 
    public Object getItem(int p_int_arg0) 
    { 
     return p_int_arg0; 
    } 

    @Override 
    public long getItemId(int p_int_arg0) 
    { 
     return p_int_arg0; 
    } 

    @Override 
    public View getView(final int p_int_pos, View p_v_convertView, ViewGroup p_vg_parent) 
    { 
     if (p_v_convertView == null) 
     { 
      /*inflate the layout */ 
      LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      p_v_convertView = inflater.inflate(R.layout.adapter_my, p_vg_parent, false); 
      viewHolder = new Holder(); 
      viewHolder.iv_image =(ImageView) p_v_convertView.findViewById(R.id.icon_image); 
      viewHolder.tv_text =(TextView) p_v_convertView.findViewById(R.id.icon_text); 
      p_v_convertView.setTag(viewHolder); 
     } 
     else 
     { 
      viewHolder = (Holder) p_v_convertView.getTag(); 
     } 
     /*set text*/ 
     viewHolder.tv_text.setText(al_Menu.get(p_int_pos).getStrMenuName()); 

     /*set image*/ 
     viewHolder.iv_search.setImageResource(al_Menu.get(p_int_pos).getStrMenuImage()); 

     viewHolder.iv_image.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       //do here 
      } 
     }); 

     viewHolder.tv_text.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       //do here 
      } 
     }); 

     return p_v_convertView; 
    } 

    class Holder 
    { 
     ImageView iv_image; 
     TextView tv_text; 
    } 
} 

adapter_my.xml

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     > 

      <ImageView 
       android:id="@+id/icon_image" 
       android:layout_width="90dp" 
       android:layout_height="90dp" 
       android:layout_gravity="center_horizontal" 
       android:layout_centerHorizontal="true" 
       android:layout_marginTop="4dp" 
       android:scaleType="fitXY" 
       /> 

      <TextView 
       android:id="@+id/icon_text" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/icon_image" 
       android:layout_gravity="center" 
       android:gravity="center" 
       android:textSize="17sp" 
       android:textColor="#000000"/> 

    </RelativeLayout> 
+0

设置为将图像图标设置为图像视图的位置? – sid

+0

在viewHolder.tv_text.setText下面设置imageview图标 – user2025187

+0

您直接将setOnClickListener设置为viewHolder.tv_text.setText下方的图像。 – sid

你需要把两个在一个containerviews然后分配onClickcontainer。然后设置android:duplicateParentState="true"以启用相同的onClick methodchild views。您的自定义的GridView的

<RelativeLayout 
     android:id="@+id/relativeLayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
    <TextView 
     android:id="@+id/textView" 
     android:duplicateParentState="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView" /> 

    <ImageView 
     android:id="@+id/imageView" 
     android:duplicateParentState="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView" 
     app:srcCompat="@mipmap/ic_launcher" /> 
</RelativeLayout>