我有一个gridView,我希望在gridView中有一个用户可以按下的图像按钮,这将在gridView中创建另一个新视图。我不想让所有的gridView项都具有相同的onClick方法(因为我添加了一个拖放功能,使用长按,因为当我这样做时,即使我使gridView“clickable = true “,它仍然使我的所有gridView项目都不可点击。所以我想知道如何做到这一点。
这是gridView的xml:
<GridView
android:id="@+id/GRIDVIEW1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dip"
android:numColumns="auto_fit"
android:columnWidth="60dp"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:gravity="center"
android:stretchMode="columnWidth"
android:clickable="true"
>
</GridView>
这是我的自定义适配器:
package com.example.awesomefilebuilderwidget;
IMPORTS
public class GridViewAdapter extends BaseAdapter {
private Context Context;
// Keep all Images in array list
public ArrayList<Integer> drawables = new ArrayList<Integer>();
CheckBox mCheckBox=null;
// Constructor
public GridViewAdapter(Context c){
Context = c;
Log.d("GridViewAdapter", "Constructor is set");
drawables.add(R.drawable.pattern1);
Log.d("GridViewAdapter", "pattern1 added");
drawables.add(R.drawable.pattern2);
Log.d("GridViewAdapter", "pattern2 added");
drawables.add(R.drawable.trashcan);
Log.d("GridViewAdapter", "trashcan added");
drawables.add(R.drawable.ic_launcher);
Log.d("GridViewAdapter", "ic_launcher added");
}
public void setCheckBox(CheckBox checkbox){
mCheckBox=checkbox;
}
@Override
// How many items are in the data set represented by this Adapter
public int getCount() {
return drawables.size();
}
@Override
// Get the data item associated with the specified position in the
// data set
public Object getItem(int position) {
return drawables.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Try to reuse the views
ImageView view = (ImageView) convertView;
boolean checked = (mCheckBox==null)?false:(((CheckBox) mCheckBox).isChecked());
// if convert view is null then create a new instance else reuse it
if (view == null) {
view = new ImageView(Context);
Log.d("GridViewAdapter", "new imageView added");
view.setId(R.id.iconImageView_id);
}
if(checked == true){
isSdReadable();
Log.i("GridViewAdapter", "checkbox is checked");
} else {
Log.i("GridView", "Icons not for use/checkbox not checked");
}
/* view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
ImageView folder = new ImageView(Context);
folder.setImageResource(R.drawable.ic_launcher);
}
});*/
view.setImageResource(drawables.get(position));
view.setScaleType(ImageView.ScaleType.CENTER_CROP);
view.setLayoutParams(new android.widget.GridView.LayoutParams(70, 70));
view.setTag(String.valueOf(position));
return view;
}
}
有没有办法可以在实际的gridView中放置一个图像按钮,并设置onClick方法与此相同:
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
ImageView folder = new ImageView(Context);
folder.setImageResource(R.drawable.ic_launcher);
}
});*/
?我试过环顾四周,但我还没有找到任何有用的东西。
另外,我已经尝试在构造函数中添加“add_button”(我希望用户按下按钮以将图像作为ic_launcher创建新视图),但是如果我这样做,我该如何制作它所以只有第一个gridView项是可点击的,不会影响其他imageViews?
答案 0 :(得分:0)
我也在努力解决同样的问题,我得到了这个解决方案:
1)在适配器中创建一个接口。
2)在界面中声明一个方法。
3)在图像按钮的onClickListener()中调用此方法。
4)在您的MainActivity中,在您在界面中声明的方法中编写要实现的功能。
OR
1)创建图像视图而不是图像按钮。
2)对于gridview编写onItemClickListener并在OnItemClicked内写入intent。
3)使用getIntent()在您想要的活动中调用此意图。
4)在intent对象中,我们使用putExtra()方法并传递您想要从当前活动传递到下一个活动的任何内容。
希望这有帮助!!!