我有一个gridview,我正在设置一个按钮适配器。它有2个按钮,我想为这些按钮设置Onclick监听器。
GridView gridview = (GridView) findViewById(R.id.gridView_table_select);
gridview.setAdapter(new ButtonAdapter(this));
在我的Gridview的getView()方法中,我将按钮添加为网格项。我也为按钮设置了onClick监听器。
public View getView(int position,
final View convertView, ViewGroup parent) {
Button btn;
if (convertView == null) {
// if it's not recycled, initialize some attributes
btn = new Button(mContext);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Context context = v.getContext();
Intent intent = new Intent(context , Main.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
btn.setLayoutParams(new GridView.LayoutParams(350, 65));
btn.setPadding(8, 8, 8, 8);
btn.setWidth(LayoutParams.WRAP_CONTENT);
正如您所看到的那样,我正在为按钮设置onClick,并尝试启动一项新活动,但是当我点击这些按钮时,没有任何反应。 我应该纠正什么?
答案 0 :(得分:1)
Context context = v.getContext();
而是使用mContext
那里已有的
if (convertView == null) {
// if it's not recycled, initialize some attributes
btn = new Button(mContext);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(mContext, //<-------------
Main.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
答案 1 :(得分:1)
让您的Activity类实现AdapterView.OnItemClickListener
并在oncreate()中调用
gv.setAdapter(myAdapter);
gv.setOnItemClickListener(this);
并使用onItemClick()来处理项目点击
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
//Do something
}
答案 2 :(得分:0)
这样做:
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext() , Main.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
答案 3 :(得分:0)
尝试在课程的开头设置你的Context,如果不是你的活动,也许在构造函数中。你已经完成了。 mContext。在那里使用它而不是获得新的背景。
答案 4 :(得分:0)
对您的代码进行少量更正..
public View getView(int position,
final View convertView, ViewGroup parent) {
Button btn = convertView;
if (btn == null) {
btn = new Button(mContext);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(mContext, Main.class)
intent .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
}
});
btn.setLayoutParams(new GridView.LayoutParams(350, 65));
btn.setPadding(8, 8, 8, 8);
btn.setWidth(LayoutParams.WRAP_CONTENT);
}
// set some text or do something
...
return btn;
}