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;
}