2014-02-06 109 views
0

我有一個gridView,我希望在gridView中有一個用戶可以按的圖像按鈕,它將在gridView中創建另一個新視圖。我不希望所有的GridView項目都具有相同的onClick方法(因爲我添加了拖放功能,將使用長時間點擊,因爲當我這樣做時,即使我使gridView「clickable = true 「,它仍然使我的所有gridView項目都不可點擊)所以我想知道我該如何做到這一點。向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; 
} 

} 

有沒有辦法,我可以把一個ImageButton的實際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

我也有同樣的問題掙扎,我得到這個解決方案:

1)創建在適配器的接口。

2)在接口中聲明一個方法。

3)在圖像按鈕的onClickListener()中調用此方法。

4)在您的MainActivity中,您要在接口中聲明的方法中實現要實現的功能。

1)創建圖像視圖而不是圖像按鈕。

2)爲gridview編寫onItemClickListener,並在OnItemClicked內寫入意圖。

3)在你想要的getIntent()函數中調用這個意圖。

4)在intent中我們使用了putExtra()方法,並將想要傳遞的任何內容從當前活動傳遞到下一個活動。

希望這有助於!