2017-10-04 12 views
0

我的活动中有一个GridView。我在GridView中有2个元素。一个是ImageView和一个TextView。从适配器的主要活动中的gridview的子项目获取单击事件

我想只做点击ImageView的操作,请记住我希望在活动中发生这种情况,而不是在GridView适配器中发生。

现在我有一个适配器,我可以使用ImageView调用getView()中的click动作,但我不想那样。我希望这种情况发生闲置在那里我打电话,

GridView gridview = (GridView) findViewById(R.id.gridview); 
gridview.setAdapter(new ImageAdapter(this, items)); 

gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 

     //THIS WORKS FINE 
     String string = ((TextView) v.findViewById(R.id.text)).getText().toString(); 
     Log.d("string",string); 

     //THE PROBLEM OCCURS HERE 
     ImageView capture = (ImageView) v.findViewById(R.id.capture); 
     capture.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 

       } 
      }); 
} 

//的问题时这里

当我第一次点击的ImageView是应该发生的动作,不会发生。相反,它发生在第二次点击和进一步。

这就是我所困扰的问题。我想要在第一次点击时发生此操作,而不是第二次点击。

+0

因为你有两个点击监听器里面。如果你想单独为TextView和ImageView单击,你应该使用'getView()'。 –

回答

0

在你的活动中创建一个方法。现在

,适配器,调用的onClick使用

((Activityname)context).methodname(parameters); 
+0

谢谢,这对我有帮助。 – Aditya

+0

如果我的回答有帮助,请立即赞同并批准ü –

0

你可以看到代码,方法块级

gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 

    String string = ((TextView) v.findViewById(R.id.text)).getText().toString(); 
    Log.d("string",string); 

    //THE PROBLEM OCCURS HERE 
    ImageView capture = (ImageView) v.findViewById(R.id.capture); 
    capture.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

      } 
     }); 
} 

你imageview的捕获被添加任何动作被点击的GridView之后。因此,在第一次点击之后,它正在执行,然后将点击侦听器设置为imageview,然后单击其执行onClick块。所以更好,处理适配器内的imageview点击事件。

您可以在适配器类中的活动中调用方法,但应该在适配器类中实现setOnClickListener

+0

谢谢,但我需要以某种方式完成此项工作。 – Aditya

0

与接口的帮助下,你可以做,做一件事创建一个接口,并实现它在你的活动,并获得适配器上的ImageView点击这里启动界面,你会得到的点击活动内

0

我认为问题在于第一次点击你只需在你的imageView上设置了OnClickListener,所以它的onClick()方法没有被调用。然而,在第二次点击时,因为已经设置了监听器,所以调用onClick()

不是每次都在网格中的项目点击(不使顺便说任何意义)新监听器设置为您的ImageView的,你应该做的任一:

如果ImageView的在每件商品都有按照相同的方式处理,在创建视图时将OnClickListener设置为适配器中的imageView。

如果不是,则将用于处理imageView点击的接口传递给适配器的构造函数,然后在活动中创建适配器时实现此接口。

相关问题