2012-10-05 2 views
0

ViewPager 내부에는 textviews 및 이미지와 함께 단일 선택 응답의 격자가있는 gridview가 있습니다. 내가 어떤 대답을 클릭하면, textview의 색상이 빨간색으로 변경되어야합니다. WHITE. 첫 번째을 제외한 모든 다른 답변에 대한 작업 벌금. 처음 gridview에서 첫 번째 답변을 클릭하면 두 번째 클릭하면 빨간색으로 바뀌지 만, 옵션을 변경하면 RED 색상이 첫 번째 옵션에 대해 흰색으로 변경되지 않고 색상이 변경되지 않습니다. 아래의 화면에서 봐ViewPager 내부의 GridView에서 첫 번째 항목에 대해 OnClickListener가 작동하지 않습니다.

내가 새 사용자 나처럼 제출 나를 위해 허용되지 않습니다

죄송 화면 ...

GridFragment#OnActivityCreated() 내부 :

gridview.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View v, int position, long arg3) { 

      currentPage = new TestTopics().getCuttentPage(); 

      tv = ((ViewHolder) v.getTag()).lbl;     

      if(selectedValues.containsKey(currentPage)) 
      { 

       selectedValues.get(currentPage).setTextColor(Color.WHITE); 
       selectedValues.remove(currentPage); 
       selectedValues.put(currentPage, tv); 
       selectedValues.get(currentPage).setTextColor(Color.RED); 



      } 
      else 
      { 

       selectedValues.put(currentPage, tv); 
       selectedValues.get(currentPage).setTextColor(Color.RED); 

      }    

     } 
    });  

ImageAdapter#getView() 방법 :

public View getView(int position, View convertView, ViewGroup parent) { 

    numTopics = mTopicList.getNumTopics(); 
    ViewHolder holder; 
    holder = new ViewHolder(); 

    if (convertView == null) { 

     int layoutId = R.layout.demo_pager_grid_item; 
     LayoutInflater li = ((Activity) mContext).getLayoutInflater(); 
     childView = li.inflate (layoutId, null); 

     holder.img = (ImageView) childView.findViewById(R.id.image); 
     holder.lbl = (TextView) childView.findViewById(R.id.title); 

     childView.setTag(holder); 

    } else { 

     childView = convertView; 
     holder = (ViewHolder) childView.getTag(); 
    }     

    if (childView != null) { 
     // Set the width and height of the child view. 
     childView.setLayoutParams(new GridView.LayoutParams(mCellWidth, mCellHeight)); 

     int j = position + mImageOffset; 

     if (j < 0) j = 0; 
     if (j >= numTopics) j = numTopics - 1; 


     imageView = (ImageView) childView.findViewById (R.id.image); 
     if (imageView != null) { 
      Resources res = mContext.getResources(); 
      int imagePadding = res.getDimensionPixelSize (R.dimen.grid_image_padding); 

      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setBackgroundResource (R.color.background_grid1_cell); 
      imageView.setPadding (imagePadding, imagePadding, imagePadding, imagePadding); 
      imageView.setImageBitmap (mTopicList.getTopicImage (j)); 
      imageView.setTag (new Integer (j)); 


     } 
     textView = (TextView) childView.findViewById (R.id.title); 

     if (textView != null) 
     {   

       textView.setText(mTopicList.getTopicTitle (j)); 
       textView.setTag (mTopicList.getTopicTitle (j)); 
       holder.lbl.setTag(mTopicList.getTopicTitle (j)); 


     } 
    } 



    return childView; 

} 

이 링크를 보았습니다 : OnClickListener not working for first item in GridView, 대답을 따르되 성공하지 못했습니다 ...

어디서 잘못 될까요?

+0

당신이 그것을 해결 했습니까? – vandzi

+0

예, 업데이트 된 코드를 첨부했습니다. 해결책을 위해 그것을 참조하십시오. – Archa

+0

감사합니다. 나는 그것을 점검 할 것입니다! – vandzi

답변

0

질문에 대한 답변 편집. 커뮤니티 위키 답변으로 변환되었습니다. What is the appropriate action when the answer to a question is added to the question itself?)

영업 쓴 참조 :

내 다음 코드에서 gridview.setBackgroundColor(Color.TRANSPARENT);를 추가

그것을 해결 한

.... :

if(patternItems.containsKey(currentPage) && selectedValues.containsKey(currentPage)) 
      { 

       selectedValues.get(currentPage).setTextColor(Color.WHITE); 
       selectedValues.remove(currentPage); 
       selectedValues.put(currentPage, tv); 
       selectedValues.get(currentPage).setTextColor(Color.RED); 
       **gridview.setBackgroundColor(Color.TRANSPARENT);** 
       patternItems.remove(currentPage);      
       patternItems.put(currentPage,tv.getText().toString()); 
      } 
      else 
      { 
       selectedValues.put(currentPage, tv); 
       selectedValues.get(currentPage).setTextColor(Color.RED); 
       **gridview.setBackgroundColor(Color.TRANSPARENT);** 
       patternItems.put(currentPage,tv.getText().toString());                        
      } 
관련 문제