单击gridview中的按钮开始新活动

时间:2012-06-25 07:15:00

标签: android android-layout android-intent android-activity android-gridview

我有一个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,并尝试启动一项新活动,但是当我点击这些按钮时,没有任何反应。 我应该纠正什么?

5 个答案:

答案 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;
}