2011-12-08 16 views
1

私はリストビューを持っています。クリックすると、選択したリストアイテムに背景イメージを表示したい場合、背景を変更します変更されます。私はこれを実装しようとしていたが、そうすることはできなかった。これで私を助けのでクリック時の背景を設定し、他のクリックで動的に変更する方法

感謝されるしてください私はあなたのリストビューにOnItemClickListenerを接続している場合、私はあなたのコードから見ることができません

@Override 
    public View getView(final int position, View convertView, 
      ViewGroup parent) { 
     View view = convertView; 
     final int getstartedItemPos = position; 
     Resources res = getResources(); 

     if (convertView == null) { 
      view = LayoutInflater.from(parent.getContext()).inflate(
        R.layout.getting_starteditem, null); 
     } 
     synchronized (view) { 
      TextView textTopic = (TextView) view 
        .findViewById(R.id.indexItems); 
      textTopic.setText(getStartedItems[getstartedItemPos]); 
      textTopic.setTypeface(tf); 
      view.setBackgroundColor(Color.TRANSPARENT); 

     } 
     return view; 
    } 

}; 

private OnItemClickListener getStartedListItem = new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
      long arg3) { 
     // TODO Auto-generated method stub 
     Intent myintent = new Intent(getApplicationContext(),GetStartedWebview.class); 
     myintent.putExtra("SelectedItem", getStartedItems[position]); 
     startActivity(myintent); 
    } 
}; 

答えて

1

、あなたがそれを行う必要があります使用していたコードを見つけてくださいあなたがしていない場合。 onItemClickでは、クリックされたビュー(ARG1)をつかむことができ、それがバックグラウンド

EDITです変更するには、それに.setBackgroundResource(int resID)を使用します。あなたが背景を示す現在のリスト項目を保持するローカル変数を使用し、そのような何かを行うことができます:

private View pressedView = null; 

private OnItemClickListener getStartedListItem = new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
      long arg3) { 
     // TODO Auto-generated method stub 
     Intent myintent = new Intent(getApplicationContext(),GetStartedWebview.class); 
     myintent.putExtra("SelectedItem", getStartedItems[position]); 
     startActivity(myintent); 

     if(pressedView != null) { 
      pressedView.setBackgroundResource(..); // reset background of old item 
      pressedView = arg1; // Point pressedView to new item 
     } 
    } 
}; 
+0

感謝ソレン、私はそれをやったが、それは一つのアイテムだけ – cavallo

+0

あああるべき問題は、私は、バックグラウンドではなく、クリックされたすべての項目に設定されている他の項目をクリックすると、変更しない背景です! –

+0

私は言ったように同じ方法をしましたが、それでもうまくいかない、背景が変わらない...助けてください – cavallo

3

pinkcandy使用この、View lastView;

public void onItemClick(AdapterView<?> arg0, View v, int pos, long arg3) 
    { 


     if(lastView==null){ 
      v.setBackgroundColor(Color.BLACK); 

      lastView=v; 
      } 
      else{ 
      lastView.setBackgroundColor(Color.WHITE); 
      v.setBackgroundColor(Color.BLACK); 

      lastView=v; 
      } 

    } 

それはあなた

役立つかもしれません3210
1

私はわからないんだけど、私は右のあなたを理解している場合、あなたは一度だけあなたのビューの背景を設定するが、それはセレクタ描画可能である必要があり、このようなものがあります:リストビューでこれを試してみてください

<?xml version="1.0" encoding="utf-8"?> 
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
     android:state_pressed="true" 
     android:drawable="*background for pressed state*" /> 
    <item 
     android:state_focused="true" 
     android:drawable="*background for focused state*" /> 
    <item 
     android:drawable="*default background*" /> 

</selector> 
3

: -

android:listSelector="@color/orange" 
関連する問題