Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 扩展栅格视图和MClickListener_Android_Gridview_Onclicklistener - Fatal编程技术网

Android 扩展栅格视图和MClickListener

Android 扩展栅格视图和MClickListener,android,gridview,onclicklistener,Android,Gridview,Onclicklistener,您好,我正在尝试从本机Gridview创建一个自定义Gridview,并覆盖onitemclick。但它从来没有捕捉到我自定义gridview上的点击 这是我的密码: ------自定义GridView类------ public class MyGridView extends android.widget.GridView implements AdapterView.OnItemClickListener { private OnItemClickListener mListener; p

您好,我正在尝试从本机Gridview创建一个自定义Gridview,并覆盖onitemclick。但它从来没有捕捉到我自定义gridview上的点击

这是我的密码:

------自定义GridView类------

public class MyGridView extends android.widget.GridView implements AdapterView.OnItemClickListener {
private OnItemClickListener mListener;
public MyGridView(Context context) {
    super(context);
}

public MyGridView(Context context, AttributeSet attrs) {
    super(context, attrs);

}

public MyGridView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);

}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int heightSpec = heightMeasureSpec;
    if (getLayoutParams().height == LayoutParams.WRAP_CONTENT)
        heightSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >>2, MeasureSpec.AT_MOST);
    super.onMeasure(widthMeasureSpec, heightSpec);
}



@Override
public void setOnItemClickListener( OnItemClickListener l )
{
    System.out.println("MPIKA");
    mListener = l;
    super.setOnItemClickListener(this);
}




@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    System.out.println("test");
}


  }
  public class Store extends Activity implements MyGridView.OnItemClickListener {
   @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.stores);
    initialize();

}
 private void initialize() {

    openShops = new ArrayList<StoreClass>();
    closedShops = new ArrayList<StoreClass>();
    open = (MyGridView) findViewById(R.id.open);
    open.setOnItemClickListener(this);
     ......  
}

   /*
     @Override
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            AlertDialog.Builder builder1 = new AlertDialog.Builder(this,AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
        builder1.setMessage("Παρακαλώ επιλέξτε τύπο πακέτου");
        builder1.setCancelable(true);
        builder1.setPositiveButton("Ok",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        dialog.cancel();
                    }
                });

    AlertDialog alert11 = builder1.show();
    TextView messageText = (TextView)alert11.findViewById(android.R.id.message);
    messageText.setGravity(Gravity.CENTER);
    alert11.show();
}*/
}
------主类------

public class MyGridView extends android.widget.GridView implements AdapterView.OnItemClickListener {
private OnItemClickListener mListener;
public MyGridView(Context context) {
    super(context);
}

public MyGridView(Context context, AttributeSet attrs) {
    super(context, attrs);

}

public MyGridView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);

}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int heightSpec = heightMeasureSpec;
    if (getLayoutParams().height == LayoutParams.WRAP_CONTENT)
        heightSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >>2, MeasureSpec.AT_MOST);
    super.onMeasure(widthMeasureSpec, heightSpec);
}



@Override
public void setOnItemClickListener( OnItemClickListener l )
{
    System.out.println("MPIKA");
    mListener = l;
    super.setOnItemClickListener(this);
}




@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    System.out.println("test");
}


  }
  public class Store extends Activity implements MyGridView.OnItemClickListener {
   @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.stores);
    initialize();

}
 private void initialize() {

    openShops = new ArrayList<StoreClass>();
    closedShops = new ArrayList<StoreClass>();
    open = (MyGridView) findViewById(R.id.open);
    open.setOnItemClickListener(this);
     ......  
}

   /*
     @Override
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            AlertDialog.Builder builder1 = new AlertDialog.Builder(this,AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
        builder1.setMessage("Παρακαλώ επιλέξτε τύπο πακέτου");
        builder1.setCancelable(true);
        builder1.setPositiveButton("Ok",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        dialog.cancel();
                    }
                });

    AlertDialog alert11 = builder1.show();
    TextView messageText = (TextView)alert11.findViewById(android.R.id.message);
    messageText.setGravity(Gravity.CENTER);
    alert11.show();
}*/
}
更新

--xml------

 <ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
    android:layout_below="@+id/line"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
  <cyprusFood.on.adapters.MyGridView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/OpenStores"
    android:horizontalSpacing="6dp"
    android:verticalSpacing="6dp"
    android:id="@+id/open"
    android:layout_alignParentLeft="true"
    android:stretchMode="columnWidth"
    android:columnWidth="100dp"
    android:numColumns="3"
    android:layout_alignParentStart="true"
    android:layout_marginLeft="6dp"
    android:layout_marginRight="6dp">

    </cyprusFood.on.adapters.MyGridView>

<TextView
    android:layout_width="wrap_content"``
    android:layout_height="wrap_content"
    android:text="7 καταστήματα εκτός ωραρίου λειτουργίας"
    android:id="@+id/CloseStores"
    android:layout_below="@+id/open"
    android:layout_alignLeft="@+id/OpenStores"
    android:layout_alignStart="@+id/OpenStores"
    android:layout_margin="10dp" />

<cyprusFood.on.adapters.MyGridView
    android:id="@+id/close"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/CloseStores"
    android:layout_alignParentLeft="true"
    android:stretchMode="columnWidth"
    android:columnWidth="100dp"
    android:horizontalSpacing="6dp"
    android:verticalSpacing="6dp"
    android:numColumns="auto_fit"
    android:layout_marginLeft="6dp"
    android:layout_marginRight="6dp"
    android:layout_alignParentStart="true"
    android:layout_marginBottom="10dp"></cyprusFood.on.adapters.MyGridView>
</LinearLayout>
</ScrollView>
更新2


我尝试过这个,但没有工作

您是否看到任何日志消息?尝试使用log.dsomeTag,someMessage;而不是System.out.printlnsomeMessage;Syso正常:P问题是onclickListener,因为我使用自定义Gridview。你永远不知道!:P我觉得代码很正确。奇怪的是,甚至连MPIKA都没有印出来。如果自定义类或xml存在其他问题,则可能会出现NullPointerException或ClassCastException。。。但什么都没有