2012-04-20 2 views
1

나는 listview가 있고 1 ImageView, 2 TextView 및 1 Button을 포함하는 사용자 정의 레이아웃으로 팽창 시켰습니다. 목록보기 항목을 클릭 할 때 단추 배경을 변경하려고하지만이를 수행 할 수 없습니다. 누군가 나를 도울 수 있습니까? 미리 감사드립니다.목록보기 항목을 클릭하면 버튼 배경을 변경하는 방법

enter image description here

row_segnalibro.xml

<?xml version="1.0" encoding="UTF-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/LinearLayout01" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" android:layout_height="50dp" > 

<ImageView android:id="@+id/ImageView01" android:src="@drawable/star" 
android:layout_height="40dp" 
    android:layout_width="40dp" 
    android:enabled="false" 
    android:focusable="false" 
    android:focusableInTouchMode="false" 
    android:clickable="false" 
    android:paddingLeft="10dp" /> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/LinearLayout02" 
    android:orientation="vertical" 
    android:layout_width="220dp" android:layout_height="match_parent"> 

<TextView 
    android:id="@+id/tvRow1" 
    android:layout_width="220dp" 
    android:layout_height="wrap_content" 
    android:focusable="false" 
    android:focusableInTouchMode="false" 
    android:clickable="false" 
    android:paddingLeft="10dp"  
    android:paddingTop="5dp" 
    android:textColor="#0967AD" 
    android:textStyle="bold" 
    /> 
<TextView 
    android:id="@+id/tvRow2" 
    android:layout_below="@id/tvRow1" 
    android:layout_width="220dp" 
    android:layout_height="wrap_content" 
    android:focusable="false" 
    android:focusableInTouchMode="false" 
    android:clickable="false" 
    android:paddingLeft="10dp"  
    android:textColor="#0967AD" 
    android:textStyle="bold" 
/> 
</RelativeLayout> 
<Button 
    android:id="@+id/butt_segnalib" 
    android:background="@drawable/freccia_o" 
    android:focusable="false" 
    android:focusableInTouchMode="false" 
    android:layout_width="20dp" 
    android:layout_height="20dp" 
    android:layout_gravity="center" /> 

Segnalibro.java

public class Segnalibro extends ListActivity{ 
      super.onCreate(savedInstanceState); 
     setContentView(R.layout.segnalibro); 

     lv = (ListView) getListView();   
.....some code 
     MySimpleCursorAdap myadap = new MySimpleCursorAdap(getApplicationContext(),R.layout.rowlayout_segnalibro,curr,campi, to); 
     lv.setAdapter(myadap); 
     lv.setClickable(true); 

      lv.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View v,int position, long arg3) { 
        Log.i("","I have clicked on item "+position); 

      }   
     }); 

MySimpleCursorAdap.java

,851,

(MySimpleCursorAdap) Button을 메소드 findViewById로 가져올 수 있습니다. 어떻게 클래스 Segnalibro에서 할 수 있습니까?

+0

이 ** freccia_o입니다 ** 상태 목록입니다 ..? – ngesh

+0

freccia_o는 png 이미지입니다. – sleone08

답변

2

좋아 .. 당신이 그것을 acheiving에 대한 상태 목록이 필요하므로 기본적으로 .. .. .. 그것을 만드는 방법을 알고 다음 버튼의 배경으로 설정하는 this를 참조

+0

대단히 고마워, 나는 표지판의 해결책을 사용했다. 아마도 호기심에 대한 해결책을 시도 할 것입니다 :) – sleone08

+1

@crazykeyboard .. 작동 할 수도 있습니다 .. 클릭리스트를 클릭 할 때마다 런타임에 버튼 이미지를 변경하지 않아도되기 때문에 상태 목록을 사용하는 것이 좋습니다. – ngesh

+0

감사합니다. 너의 충고, 나는 이제 이해한다. 나는 그것을 사용하려고 노력할 것이다. 좋은 하루 되세요;) – sleone08

1

ListActivity을 기본 클래스로 사용하면 onItemClickListener을 직접 만들 필요가 없으며 이미 있습니다. protected void onListItemClick(ListView l, View v, int position, long id)을 무시하십시오. 내부에서 ID를 통해 Button을 가져올 수 있습니다.

http://developer.android.com/reference/android/app/ListActivity.html

protected void onListItemClick(ListView l, View v, int position, long id) 
{ 
    Button bt = (Button) v.findViewById(R.id.button); 

    //do something fancy with the button 
} 
+0

대단히 감사합니다. 내 하루를 매우 행복하게 만들었습니다. 멋진 하루 되세요 :) – sleone08

+1

@crazykeyboard 버튼의 배경을 상태 변경 (눌렀거나 집중하는 등)으로 변경하고 싶다면 sandy의 솔루션을 사용하십시오. 이렇게하면 한 곳에서 모든 작업을 수행 할 수 있으며 다른 작업의 버튼에 대한 효과를 쉽게 다시 사용할 수 있습니다. – signpainter

1

가의 Bindview 방법의 목록 항목보기의에 ClickListener를 추가하려고 :

public void bindView(View view, Context context, final Cursor cursor) { 

    //some code 

    view.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     final ImageButton button = (ImageButton)v.findViewById(R.id.list_item_button); 
     button.setBackgroundColor(...) 
     } 
    }); 
)