android自定义gridview实现中的子项单击列表器

android自定义gridview实现中的子项单击列表器,android,gridview,android-gridview,Android,Gridview,Android Gridview,我有一个带有自定义适配器实现的网格视图。触摸栅格视图项目时,将选中整个项目。我想在网格视图中选择不同的子项时执行不同的操作 在下面的示例中,我在项目中有两个图像和一个文本视图。我想在触摸文本视图、图像视图时执行不同的操作 在安卓系统中可以做到这一点吗 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/listrow" android:layout_width="

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

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

在安卓系统中可以做到这一点吗

<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>
GridViewAdapterImpl customGridAdapter=新的GridViewAdapterImpl(this,R.layout.row\u list\u videos,this.getVideoFiles()); setAdapter(customGridAdapter)

setOnItemClickListener(新的OnItemClickListener(){ public void onItemClick(AdapterView父对象、视图v、int位置、长id){ }
});

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

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;
}
公共类GridViewAdapterImpl扩展ArrayAdapter{
私人最终活动背景;
私有最终字符串[]数据;
私有int资源;
公共GridViewAdapterImpl(活动上下文、int资源、字符串[]文件名){
超级(上下文、资源、文件名);
这个资源=资源;
this.context=上下文;
this.data=文件名;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
ViewHolder=null;
if(行==null){
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
行=充气机。充气(资源,父项,false);
holder=新的ViewHolder();
holder.imageTitle=(TextView)row.findViewById(R.id.txttitle);
holder.imvShare=(ImageView)row.findViewById(R.id.share)
//设置OnClickListener
holder.imageTitle.setOnClickListener(plsnTitleClickListener);
holder.imvShare.setOnClickListener(plsnShareClickListener);
row.setTag(支架);
}否则{
holder=(ViewHolder)row.getTag();
}
holder.imageTitle.setText(数据[位置]);
返回行;
}
私有OnClickListener plsnTitleClickListener=新OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO在此实现逻辑
}
};
私有OnClickListener plsnShareClickListener=新OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO在此实现逻辑
}
};
静态类视窗夹{
文本视图图像标题;
图像视图imvShare;
}

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

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;
}
公共类GridViewAdapterImpl扩展ArrayAdapter{
私人最终活动背景;
私有最终字符串[]数据;
私有int资源;
公共GridViewAdapterImpl(活动上下文、int资源、字符串[]文件名){
超级(上下文、资源、文件名);
这个资源=资源;
this.context=上下文;
this.data=文件名;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
ViewHolder=null;
if(行==null){
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
行=充气机。充气(资源,父项,false);
holder=新的ViewHolder();
holder.imageTitle=(TextView)row.findViewById(R.id.txttitle);
holder.imvShare=(ImageView)row.findViewById(R.id.share)
//设置OnClickListener
holder.imageTitle.setOnClickListener(plsnTitleClickListener);
holder.imvShare.setOnClickListener(plsnShareClickListener);
row.setTag(支架);
}否则{
holder=(ViewHolder)row.getTag();
}
holder.imageTitle.setText(数据[位置]);
返回行;
}
私有OnClickListener plsnTitleClickListener=新OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO在此实现逻辑
}
};
私有OnClickListener plsnShareClickListener=新OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO在此实现逻辑
}
};
静态类视窗夹{
文本视图图像标题;
图像视图imvShare;
}
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;
}