将图像按钮添加到gridView

时间:2014-02-06 02:27:38

标签: android gridview imagebutton

我有一个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?

1 个答案:

答案 0 :(得分:0)

我也在努力解决同样的问题,我得到了这个解决方案:

1)在适配器中创建一个接口。

2)在界面中声明一个方法。

3)在图像按钮的onClickListener()中调用此方法。

4)在您的MainActivity中,在您在界面中声明的方法中编写要实现的功能。

OR

1)创建图像视图而不是图像按钮。

2)对于gridview编写onItemClickListener并在OnItemClicked内写入intent。

3)使用getIntent()在您想要的活动中调用此意图。

4)在intent对象中,我们使用putExtra()方法并传递您想要从当前活动传递到下一个活动的任何内容。

希望这有帮助!!!