2014-02-06 3 views
0

나는 gridView를 가지고 있으며 사용자가 누를 수있는 gridView에 imagebutton을 갖고 싶습니다. 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; 
} 

} 

나는 실제의 GridView에하여 ImageButton을 넣어 설정할 수있는 방법이 있나요 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) 의도 객체에서 putExtra() 메서드를 사용하고 현재 활동에서 다음 활동으로 전달할 내용을 전달합니다.

희망이 도움이됩니다!