Android 扩展栅格视图和MClickListener
您好,我正在尝试从本机Gridview创建一个自定义Gridview,并覆盖onitemclick。但它从来没有捕捉到我自定义gridview上的点击 这是我的密码: ------自定义GridView类------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
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。。。但什么都没有