0

我有一个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,并尝试开始一个新活动,但是当我单击这些按钮时,什么也没有发生。我应该纠正什么?

4

5 回答 5

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);
                }
            });
于 2012-06-25T07:20:42.157 回答
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
}
于 2012-06-25T07:25:29.887 回答
0

像这样做:

public void onClick(View v) {
            Intent intent = new Intent(getApplicationContext() , Main.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        }
于 2012-06-25T07:18:44.827 回答
0

尝试在课程开始时设置上下文,如果不是你的活动,可能在构造函数中。你已经完成了。上下文。在那里使用它而不是获取新的上下文。

于 2012-06-25T07:19:49.893 回答
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;
}
于 2012-06-25T07:23:43.600 回答