当前位置: 首页 > 知识库问答 >
问题:

android自定义gridview实现中的子项click listner

万俟华辉
2023-03-14

我有自定义适配器实现的网格视图。触摸网格视图项时,将选择整个项。我想对在网格视图中选择不同的子项执行不同的操作。

在下面的例子中,我在项目中有两个图像和一个文本视图。我想在触摸文本视图、图像视图时执行不同的操作。

这是可能做到这一点在Android?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listrow"
android:layout_width="fill_parent"
android:layout_height="66dp"
android:background="@drawable/grid_color_selector"
android:descendantFocusability="blocksDescendants"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="fill_horizontal" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/thumbimage"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_margin="4dp"
        android:layout_weight="1"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:scaleType="fitXY"
        android:src="@drawable/icon" />

    <TextView
        android:id="@+id/txttitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="10dp"
        android:layout_weight="44"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:text="English Channels"
        android:textColor="@color/Black"
        android:textSize="16sp" />

    <ImageView
        android:id="@+id/share"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_margin="4dp"
        android:layout_weight="1"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:scaleType="fitXY"
        android:src="@drawable/share" />

</LinearLayout>

自定义网格视图实现是

public class GridViewAdapterImpl extends ArrayAdapter < String > {
private final Activity context;
private final String[] data;
private int resource;

public GridViewAdapterImpl(Activity context, int resource, String[] fileNames) {
    super(context, resource, fileNames);
    this.resource = resource;
    this.context = context;
    this.data = fileNames;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    ViewHolder holder = null;

    if (row == null) {
        LayoutInflater inflater = ((Activity) context).getLayoutInflater();
        row = inflater.inflate(resource, parent, false);
        holder = new ViewHolder();
        holder.imageTitle = (TextView) row.findViewById(R.id.txttitle);
        row.setTag(holder);
    } else {
        holder = (ViewHolder) row.getTag();
    }

    holder.imageTitle.setText(data[position]);
    return row;
}

static class ViewHolder {
    TextView imageTitle;
}

Gridview调用是

GridView gridView = (GridView) findViewById(R.id.gridView);

gridviewadapteripl customGridAdapter = new gridviewadapteripl(this,R.layout.row_list_videos,this . getvideofiles());GridView . set adapter(customGridAdapter);

gridView。setOnItemClickListener(新的onItemClick Listener(){public void onItemClick(AdapterView父级,视图v,int位置,长id){

共有1个答案

陈业
2023-03-14

只需将ImageView组件添加到您的视图容器中,并实现侦听器,请参见:

public class GridViewAdapterImpl extends ArrayAdapter < String > {
private final Activity context;
private final String[] data;
private int resource;

public GridViewAdapterImpl(Activity context, int resource, String[] fileNames) {
    super(context, resource, fileNames);
    this.resource = resource;
    this.context = context;
    this.data = fileNames;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    ViewHolder holder = null;

    if (row == null) {
        LayoutInflater inflater = ((Activity) context).getLayoutInflater();
        row = inflater.inflate(resource, parent, false);
        holder = new ViewHolder();
        holder.imageTitle = (TextView) row.findViewById(R.id.txttitle);
        holder.imvShare = (ImageView) row.findViewById(R.id.share)
        // Set OnClickListener      
        holder.imageTitle.setOnClickListener(plsnTitleClickListener);
        holder.imvShare.setOnClickListener(plsnShareClickListener);
        row.setTag(holder);
    } else {
        holder = (ViewHolder) row.getTag();
    }

    holder.imageTitle.setText(data[position]);
    return row;
}

private OnClickListener plsnTitleClickListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Implement the Logic here
    }
};

private OnClickListener plsnShareClickListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Implement the Logic here
    }
};

static class ViewHolder {
    TextView imageTitle;
    ImageView imvShare;
}
 类似资料:
  • 本文向大家介绍Android自定义View实现可以拖拽的GridView,包括了Android自定义View实现可以拖拽的GridView的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android实现可拖拽GridView的具体代码,供大家参考,具体内容如下 先看看效果图 主要思想: 1、监听触碰事件 2、用WindowManager添加拖曳的图片 3、用Collections.

  • (0,0)(0,1) (1,0)(1,1) 像这种格式一样,我需要显示,也需要根据数据大小水平和垂直滚动

  • 本文向大家介绍Android自定义View实现飘动的叶子效果(三),包括了Android自定义View实现飘动的叶子效果(三)的使用技巧和注意事项,需要的朋友参考一下 上一篇对自定义View及一些方法有所了解,下面做一个简单的叶子飘动的例子 主要技术点 1、添加背景图片canvas.drawBitmap() 2、Matrix动画类 3、Matrix添加到画布上 步骤 1、添加黄色背景颜色 2、添加

  • 本文向大家介绍android中RecyclerView自定义分割线实现,包括了android中RecyclerView自定义分割线实现的使用技巧和注意事项,需要的朋友参考一下 最近一直在看RecyclerView,较之ListView它确实是灵活多变,给予开发者更多自定义的空间,比如:需要添加头部和尾部、item的点击事件、自定义的LayoutManager,还有就是下面要说的自定义的分割线。 1

  • 本文向大家介绍Android实现自定义倒计时,包括了Android实现自定义倒计时的使用技巧和注意事项,需要的朋友参考一下 最近工作中遇到个要做倒计时60秒的进度条,经过参考别人的资料做出来需求的效果。废话少说先来个效果: 一定想知道是怎么实现的吧!下面是代码 然后新建一个attr.xml; 这样一个自定义的view就写完了;那怎么用呢;布局就不说了; 这样就轻轻松松的跑起来了,希望能帮助到需要的

  • 本文向大家介绍Android实现自定义的弹幕效果,包括了Android实现自定义的弹幕效果的使用技巧和注意事项,需要的朋友参考一下 一、效果图 先来看看效果图吧~~ 二、实现原理方案 1、自定义ViewGroup-XCDanmuView,继承RelativeLayout来实现,当然也可以继承其他三大布局类哈 2、初始化若干个TextView(弹幕的item View,这里以TextView 为例,