2014-04-17 3 views
-1

데이터가있는 행을 표시하는 데 사용되는 ListView가 있습니다. 각 행에는 버튼이 있어야합니다. 해당 버튼을 클릭하면 행과 관련된 데이터가 포함 된 쿼리가 시작됩니다. 그러나 버튼을 표시하는 데 문제가 있습니다. 레이아웃 파일에 단추를 정의하면 표시되는 ID와 동일한 모든 단추에 문제가 발생하기 시작합니다. 버튼을 동적으로 생성하면 레이아웃이 나타나지 않거나 엉망이됩니다.ListView의 동적 버튼 만들기

편집 : 이 동적으로 버튼을 만드는 데 사용 내 코드입니다 :

LinearLayout ll = (LinearLayout) findViewById(R.id.button_container); 
LayoutParams params = ll.getLayoutParams(); 
btn = new Button(this); 
btn.setText("Check in"); 
btn.setId(i); 
ll.addView(btn); 
params.height=LayoutParams.WRAP_CONTENT; 
params.width=LayoutParams.WRAP_CONTENT; 
ll.setLayoutParams(params); 
btn.setTag(mGoalIds[i]); 
btn.setOnClickListener(mButtonListener); 

EDIT2 : OnItemClickListener로 버튼을 대체하여 그것을 해결하기 위해 관리.

+3

는 몇 가지 관련 코드를하시기 바랍니다 추가합니다. – Sajmon

+0

귀하의 어댑터의'getView' 내에서 클릭 리스너를 구현하십시오 –

+0

내 목록을 채우기 위해 SimpleCursorAdapter를 사용하고 있습니다. 그 getView 메서드를 재정의해야합니까? – Anubis

답변

0

첫 번째 구현은 xml 레이아웃 파일에서 버튼을 정의해야합니다.

이제 모든 버튼이 동일한 ID를 가지고 있으므로 런타임에 어떤 행 버튼을 클릭했는지 감지하는 방법이 궁금합니다.

솔루션 ->

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // ........................... 
     button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       String getSelectedItem = yourArrayList.get(position); 
      } 
     }); 

     return convertView; 
    }