2

这是我的自定义OnClickListener。我正在传递我的 Gridview 按钮的位置ButtonAdapter.class。我想为网格视图的每个按钮打开一个新活动。我应该在我的MyOnClickListener.class?

MyOnClickListener.class

import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;

public class MyOnClickListener implements OnClickListener {


private final int position;  

    public MyOnClickListener(int position)  
    {  
        this.position = position;  
    }  

    public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent intent = new Intent(v.getContext(), WordsList.class);
        v.getContext().startActivity(intent);
    }

}

我得到了解决方案。我试过了,它有效!

public class MyOnClickListener implements OnClickListener {


private final int position;  

public MyOnClickListener(int position)  
{  
    this.position = position;  
}  

public void onClick(View v) {
    // TODO Auto-generated method stub
    switch(position){
        case 0:
        Intent a = new Intent(v.getContext(), WordsList.class);
        v.getContext().startActivity(a);
        break;
    case 1:
        Intent b = new Intent(v.getContext(), About.class);
        v.getContext().startActivity(b);
        break;  

    }


}

}
4

3 回答 3

4

或类似的东西:

private Class[] activities = {
    Activity1.class,   // position=0
    Activity2.class,   // position=1
    //...
    };

public void onClick(View v) {
    Intent intent = new Intent(v.getContext(), activities[position]);
    v.getContext().startActivity(intent);
}

但这很简单,也许我错过了重点?

于 2012-08-31T09:18:04.310 回答
1
public void onClick(View v) {
    // TODO Auto-generated method stub
 Intent intent; 
 switch(v.getId())
 {
    case R.id.btn1:
       intent = new Intent(v.getContext(), WordsList1.class);
       v.getContext().startActivity(intent);
       break;
    case R.id.btn2:
       intent = new Intent(v.getContext(), WordsList2.class);
       v.getContext().startActivity(intent);
       break;
  }

}
于 2012-08-31T09:12:05.730 回答
0

我很确定您应该使用 OnItemClickListener,因为它专门用于基于适配器的 UI。除了视图本身(如在 OnClick 中)之外,它还会传递给您,还会传递位置和 ID,以便轻松识别调用者并对其进行正确操作。

于 2012-08-31T09:16:22.420 回答