为什么Image OnClickListener()在点击时没有响应

时间:2017-04-17 16:53:30

标签: android android-layout gridview

这是我第一次提出问题。我是android的初学者。当我以一种简单的方式使用图像OnClickListener()时它正在工作但当我使用gridView时有一个imageView和一个TextView on Image Click我想跳转到一个新的活动。 我所做的只是调用gridView OnItemClickListener()并跳转到另一个活动,正如我在下面显示的那样

 gridView = (GridView) findViewById(R.id.gridview1);
 gridView.setAdapter(new Adapter1(this));


 gridView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
         Intent sendID_intent = new Intent(Activtiy1.this, Activity2.class);
            startActivity(sendID_intent);


        }
    });

其中 Adapter1 扩展 BaseAdapter 使用Picasso库加载图片,这也是唯一的问题是图片点击事件这是行不通的。

public class Adapter1 extends BaseAdapter {
private Context mC1;

ArrayList<View> viewList = new ArrayList<View>();

public Adapter1(Context context) {
    mC1 = context;
}


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

@Override
public Object getItem(int position) {
    return normlSearchList.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}
@SuppressLint("ViewHolder")
@Override
public View getView(final int position, View convertView,
                    ViewGroup parent) {
   View view1=convertView;

    if ((position + 1) > viewList.size()) {

        LayoutInflater inflater = (LayoutInflater) mC1.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view1 = inflater.inflate(R.layout.view_grid,null);
        ImageView imageView = (ImageView) view1.findViewById(R.id.iv_galleryb);
        TextView textView = (TextView) view1.findViewById(R.id.tv_name);

        textView.setText(normlSearchList.get(position).getPost_title());

        final String txtID;
        String img_url = normlSearchList.get(position).getImage();
        Picasso.with(mContext)
                .load(img_url)
                .placeholder(R.drawable.it_logo_td)
                .error(R.drawable.it_logo_td)
                .noFade().resize(150, 150)
                .centerCrop()
                .into(imageView);
        viewList.add(view1);


        imageView.setOnClickListener(new OnClickListener() {


            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(mContext, Activity2.class);
                mC1.startActivity(intent);
            }
        });
    }

    return view1;
}
}

我的布局文件只包含相对布局,如果没有找到数据,则包含一个用于显示数据未找到的TextView的linearLayout和一个gridView

<?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"
    android:layout_margin="5dp"
 >
    <LinearLayout
        android:id="@+id/layout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:orientation="horizontal" >
...................
    </LinearLayout>
<TextView
    android:text=""
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textView"
    android:gravity="center_horizontal"
    android:visibility="invisible"
     />
<GridView
    android:id="@+id/gridview1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_below="@+id/layout1"
    android:numColumns="3"
    android:columnWidth="200dp"
    android:gravity="center"
    android:stretchMode="columnWidth"
   />

我的viewgrid.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="100dp"
     android:layout_height="80dp"
     android:descendantFocusability="afterDescendants">
 <ImageView 
     android:id="@+id/iv_galleryb"
     android:layout_width="100dp"
     android:layout_height="80dp"
     android:clickable="true"
     android:scaleType="fitXY"
     />

<TextView
android:id="@+id/tv_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/iv_galleryb"
/>

我希望我能清楚地解决问题。

1 个答案:

答案 0 :(得分:1)

我会避免在GridView中使用可点击的视图,而不是使用RecyclerView。因为GridView实现了onItemClick,所以它可能与ImageView可点击相冲突。

无论如何,请尝试在android:focusable="true"

中添加<ImageView />