2014-09-03 1 views
0

내 문제에 대한 해결책을 찾을 수 없습니다. 레이아웃이있는 gridview 있습니다. 레이아웃에는 이미지보기와 텍스트보기가 포함됩니다. 필요한 것은 항목을 터치 할 때 이미지 뷰를 애니메이션으로 만드는 것입니다. 어떻게 gridview에서 on 항목 keydown 이벤트를 감지 할 수 있습니까? 당신은 당신의 이미지가있는 부모보기에 View.OnTouchListener를 추가 할 필요가Android GridView 항목이 터치 된 수신기

public class GridViewAdapter extends BaseAdapter { 
    private ArrayList<SingleButton> buttons; 
    private MainActivity mainActivity; 

    public GridViewAdapter(MainActivity mainActivity) { 
     this.mainActivity = mainActivity; 
     this.buttons = new ArrayList<SingleButton>(); 

     Resources res = mainActivity.getApplicationContext().getResources(); 
     String[] temp = res.getStringArray(R.array.buttons); 
     int[] buttonImages = { R.drawable.pic1, R.drawable.pic2, 
       R.drawable.pic3, R.drawable.pic4, R.drawable.pic5, 
       R.drawable.pic6, R.drawable.pic7, R.drawable.pic8, 
       R.drawable.pic9 }; 

     for (int count = 0; count < 9; ++count) { 
      this.buttons 
        .add(new SingleButton(buttonImages[count], temp[count])); 
     } 
    } 

    @Override 
    public int getCount() { 
     return this.buttons.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return this.buttons.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @SuppressLint("ViewHolder") 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     ViewHolder holder = null; 

     if (row == null) { 
      LayoutInflater layoutInflater = (LayoutInflater) mainActivity 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row = layoutInflater.inflate(R.layout.single_button, parent, false); 
      holder = new ViewHolder(row); 
      row.setTag(holder); 
     } else { 
      holder = (ViewHolder) row.getTag(); 
     } 

     holder.buttonImage.setImageResource(buttons.get(position).image); 
     holder.buttonText.setText(buttons.get(position).buttonText); 

     return row; 
    } 

    class ViewHolder { 
     ImageView buttonImage; 
     TextView buttonText; 

     public ViewHolder(View v) { 
      this.buttonImage = (ImageView) v.findViewById(R.id.imageViewButton); 
      this.buttonText = (TextView) v.findViewById(R.id.textViewButton); 
     } 
    } 

    class SingleButton { 
     int image; 
     String buttonText; 

     SingleButton(int image, String buttonText) { 
      this.image = image; 
      this.buttonText = buttonText; 
     } 
    } 
+0

어댑터 코드를 공유하십시오. getView로 변경해야합니다 –

+0

내 게시물을 편집했습니다. – definera

답변

0

:

여기 내 어댑터입니다. 여기에서 상위보기는 그리드 행입니다.

setOnTouchListener(View.OnTouchListener)을 통해이 작업을 수행 할 수 있습니다. 아래 코드는 ViewHolder 클래스를 아래 코드로 대체해야합니다.

class ViewHolder implements View.OnTouchListener { 
    ImageView buttonImage; 
    TextView buttonText; 

    public ViewHolder(View v) { 
     this.buttonImage = (ImageView) v.findViewById(R.id.imageViewButton); 
     this.buttonText = (TextView) v.findViewById(R.id.textViewButton); 
     v.setOnTouchListener(this); 
    } 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (MotionEvent.ACTION_DOWN == event.getAction()) { 
      // Here you can put animation for your image view 
      // this.buttonImage is the target image view. 
     } 
     return true; 
    } 
} 
+0

예, 작동했지만 onItemClick()이 호출되지 않았습니다. 클릭 한 항목이 무엇인지 알아야합니다. – definera

+0

이 어댑터를 호출하고 onItemClick()을 사용하는 코드를 공유하십시오. –