2012-11-06 4 views
2

두 개의 버튼이 포함 된 맞춤 목록보기 어댑터가 있습니다. 버튼을 클릭하기가 어려우며 초점을 잃어 버리거나 인식하기 전에 여러 번 터치해야합니다. 클릭.Android : 목록보기 항목의 버튼 누르기

@Override 
public View getView(int position, View view, final ViewGroup parent) { 

    DataEntity data = entityList.get(position); 

    view = inflater.inflate(R.layout.new_mission_row, parent, false); 

// inflate other views 


    Button playButton = (Button) view.findViewById(R.id.buttonPlay); 
    playButton.setBackgroundResource(R.drawable.blue_button); 
    playButton.setTextColor(Color.WHITE); 
    MyClickListener listener = new MyClickListener(context,entity); 
    playButton.setOnClickListener(listener); 
    playButton = (Button) view.findViewById(R.id.buttonMap); 
    playButton.setBackgroundResource(R.drawable.blue_button); 
    playButton.setTextColor(Color.WHITE); 
    playButton.setOnClickListener(listener); 
    return view; 
} 
+0

클릭을 인식해야합니다. 클릭 응답은 onClick() 메소드에서 수행중인 작업을 기반으로합니다. 많은 것을로드하는 경우 클릭 이벤트가 너무 늦게 응답하는 것처럼 느껴질 수 있습니다. 그렇지 않으면 배경 소스가 버튼 표면에 완전히 덮여 있지 않은 작은 크기 일 수도 있습니다. –

+0

눌린 상태의 드로어 블을 변경하지 않았기 때문에 내 클릭 리스너를 방정식에서 제외했습니다. –

답변

1

코드를 한 번 확인하십시오. buttonmap에 대해 다른 버튼 객체를 만들지 않았습니다. 당신은 당신이 효율적으로 목록보기를 채울 ViewHolder pattern를 사용해야 목록보기 채우는 때 당신은 또한 buttonPlay

위해 만든 것처럼 여기

playButton = (Button) view.findViewById(R.id.buttonMap); 

동일한 버튼 객체를 사용하고 있습니다.

+0

네, 그럴 것 같습니다. 내 행에 포함 된 뷰가 insync 인 ViewHolder 패턴으로 수정되었습니다. 다시 한 번 감사드립니다. –

1

아래를 참조하십시오.

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

     View v = convertView; 
     if (v == null) { 
      LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      imageLoader = new SISIImageLoader(MY_ACTIVITY.this); 
      v = vi.inflate(R.layout.game_display_row, null); 
      ViewHolder holder = new ViewHolder(); 

      holder.deleteGameBtn = (Button) v.findViewById(R.id.deleteGameBtn); 


      v.setTag(holder); 
     } 

     final Gamedata o = items.get(position); 

     ViewHolder holder = (ViewHolder) v.getTag(); 


     if (o != null) { 

      Button deleteGameBtn = (Button) v.findViewById(R.id.deleteGameBtn); 

      holder.deleteGameBtn.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 

         // do what you want to do on click 

        } 


      }); 

     } 
     return v; 
    } 

희망 사항은 문제를 해결할 것입니다.

+0

정말 도움을 주셔서 감사합니다. –