Android 网格视图setOnItemClickListener不工作
我的监听器不工作。 MyCode是:Android 网格视图setOnItemClickListener不工作,android,android-listview,onclicklistener,android-gridview,android-adapter,Android,Android Listview,Onclicklistener,Android Gridview,Android Adapter,我的监听器不工作。 MyCode是: public class ReportAboutProblem extends ActionBarActivity implements View.OnClickListener{ public final int CAMERA_RESULT = 0; GridView gridView; Button btnAddPhoto; ArrayList<Bitmap> myImages; public void onCreate(Bundle sa
public class ReportAboutProblem extends ActionBarActivity implements View.OnClickListener{
public final int CAMERA_RESULT = 0;
GridView gridView;
Button btnAddPhoto;
ArrayList<Bitmap> myImages;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.report_about_problem_activity);
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#85abc4")));
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
btnAddPhoto=(Button)findViewById(R.id.btn_add_photo);
btnAddPhoto.setOnClickListener(this);
gridView = (GridView) findViewById(R.id.grid_new);
myImages=new ArrayList<Bitmap>();
myImages.add(BitmapFactory.decodeResource(getResources(),
R.drawable.ic_launcher));
gridView.setOnItemClickListener(mItemClickListener);
gridView.setAdapter(new CustomGridAdapter(this, myImages));
}
private AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
Toast.makeText(ReportAboutProblem.this, "You have clicked on item '" + "'", Toast.LENGTH_SHORT).show();
}
};
@Override
public void onClick(View v) {
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_RESULT);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_RESULT) {
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
myImages.add(thumbnail);
gridView.setOnItemClickListener(mItemClickListener);
gridView.setAdapter(new CustomGridAdapter(this, myImages));
}
}
}
公共类ReportAboutProblem扩展了ActionBarActivity实现了View.OnClickListener{
公共最终int摄像机_结果=0;
GridView;
按钮btnAddPhoto;
arraylistmyimages;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.report关于问题活动);
getSupportActionBar().setBackgroundDrawable(新的ColorDrawable(Color.parseColor(“#85abc4”));
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT\u INPUT\u ADJUST\u PAN);
btnAddPhoto=(按钮)findviewbyd(R.id.btn\u add\u photo);
btnAddPhoto.setOnClickListener(此);
gridView=(gridView)findViewById(R.id.grid\u new);
myImages=newarraylist();
myImages.add(BitmapFactory.decodeResource(getResources()),
R.可牵引ic_发射器);
setOnItemClickListener(mItemClickListener);
setAdapter(新的CustomGridAdapter(this,myImages));
}
私有AdapterView.OnItemClickListener mItemClickListener=新AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父项、视图、整数位置、长id){
Toast.makeText(ReportAboutProblem.this,“您已经单击了项目“+”,Toast.LENGTH_SHORT).show();
}
};
@凌驾
公共void onClick(视图v){
Intent cameraIntent=新的Intent(MediaStore.ACTION\u IMAGE\u CAPTURE);
startActivityForResult(摄像机帐篷、摄像机结果);
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
if(requestCode==CAMERA\u结果){
位图缩略图=(位图)数据.getExtras().get(“数据”);
添加(缩略图);
setOnItemClickListener(mItemClickListener);
setAdapter(新的CustomGridAdapter(this,myImages));
}
}
}
我的适配器是:
public class CustomGridAdapter extends BaseAdapter {
private Context context;
//private final String[] gridValues;
ArrayList<Bitmap> arrayList;
ImageButton i1;
//Constructor to initialize values
public CustomGridAdapter(Context context, ArrayList<Bitmap> ob) {
arrayList = ob;
this.context = context;
// this.gridValues = gridValues;
}
@Override
public int getCount() {
// Number of times getView method call depends upon gridValues.length
return arrayList.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
// Number of times getView method call depends upon gridValues.length
public View getView( int position, View convertView, ViewGroup parent) {
final int pos = position;
Log.d("myLogs","position="+position);
// LayoutInflator to call external grid_item.xml file
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if (convertView == null) {
gridView = new View(context);
gridView = inflater.inflate(R.layout.grid_item, null);
ImageView imageView = (ImageView) gridView
.findViewById(R.id.grid_item_image);
Log.d("myLogs","Set image "+position+" image "+arrayList.get(position));
imageView.setImageBitmap(arrayList.get(position));
} else {
gridView = (View) convertView;
}
return gridView;
}
}
公共类CustomGridAdapter扩展了BaseAdapter{
私人语境;
//私有最终字符串[]网格值;
ArrayList ArrayList;
图像按钮i1;
//构造函数初始化值
公共CustomGridAdapter(上下文,ArrayList ob){
arrayList=ob;
this.context=上下文;
//this.gridValues=gridValues;
}
@凌驾
public int getCount(){
//getView方法调用的次数取决于gridValues.length
返回arrayList.size();
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
//getView方法调用的次数取决于gridValues.length
公共视图getView(int位置、视图转换视图、视图组父视图){
最终int pos=位置;
Log.d(“myLogs”,“position=“+position”);
//LayoutFlator调用外部网格_item.xml文件
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
视图网格视图;
if(convertView==null){
gridView=新视图(上下文);
gridView=充气机。充气(R.layout.grid_项,空);
ImageView ImageView=(ImageView)gridView
.findviewbyd(R.id.grid\u item\u image);
Log.d(“myLogs”,“Set image”+位置+“image”+arrayList.get(位置));
setImageBitmap(arrayList.get(position));
}否则{
gridView=(视图)convertView;
}
返回gridView;
}
}
自定义gridView元素为:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="100dp"
android:layout_height="100dp"
android:padding="5dp" >
<ImageView
android:id="@+id/grid_item_image"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginRight="10px"
android:src="@drawable/ic_launcher" android:layout_alignParentLeft="true" android:layout_marginLeft="4dp"
android:layout_alignParentTop="true" android:layout_marginTop="4dp">
</ImageView>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton" android:src="@android:drawable/ic_delete"
android:background="@android:color/transparent"
android:paddingLeft="10dp"
android:layout_alignParentRight="true" android:layout_alignParentTop="true"/>
尝试使用
android:DegenantFocusability=“BlocksDescents”
,单击列表项时,ImageButton会消耗焦点。尝试使用android:DegenantFocusability=“BlocksDescents”
,单击列表项时,ImageButton会消耗焦点。尝试使用android:DegenantFocusability=“BlocksDescents>=“BlocksDescents”
,单击列表项时,ImageButton会消耗焦点。尝试使用android:DegenantFocusability=“BlocksDescents”
,单击列表项时,ImageButton会消耗焦点。使用imageView而不是ImageButton,它将运行
[这个问题的解决办法是:
不要在网格中使用可点击的对象。这种情况下Android无法处理网格的点击事件
相反,使用一些东西来显示类似的用户界面视图。而不是处理对象单击操作
false;将按钮置于网格中以执行某些单击操作
true;放置imageview而不是imagebutton,并处理imageview的单击事件。]
或
把这些
android:focusable="false"
android:focusableInTouchMode="false"
到您的ImageButton。使用imageView而不是ImageButton,它将运行 [这个问题的解决办法是: 不要在网格中使用可点击的对象。这种情况下Android无法处理网格的点击事件 相反,使用一些东西来显示类似的用户界面视图。而不是处理对象单击操作 false;将按钮置于网格中以执行某些单击操作 true;放置imageview而不是imagebutton,并处理imageview的单击事件。] 或 把这些
android:focusable="false"
android:focusableInTouchMode="false"
到您的ImageButton。使用imageView而不是ImageButton,它将运行 [这个问题的解决办法是: 不要在网格中使用可点击的对象。这种情况下Android无法处理网格的点击事件 相反,使用一些东西来显示类似的用户界面视图。而不是处理对象单击操作 false;将按钮置于网格中以执行某些单击操作 true;放置imageview而不是imagebutton,并处理imageview的单击事件。] 或 把这些
android:focusable="false"
android:focusableInTouchMode="false"
到您的ImageButton。使用imageView而不是ImageButton,它将运行 [这个问题的解决办法是: 不要在网格中使用可点击的对象。这种情况下Android无法处理网格的点击事件 相反,使用一些东西来显示类似的用户界面视图。而不是处理对象单击操作 错误;将按钮放入网格中以执行