1

リストフラグメントを使用してアイテムのリストを表示しています。アイテムがクリックされるたびに背景が変化し、変化するようにしたいのですが、アイテムが初めてクリックされたときにその背景に変更はありませんアイテム。助けてください。私のコードはここにあります

フラグメントクラス:-

public class Categoryfragment extends ListFragment 

 {
   DBhelper dh;
  Cursor cursor;
      @Override
    public void onCreate(Bundle savedInstanceState)
{       
// TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
      dh = new DBhelper(getActivity()); 
  refreshadpater();
}
  @Override
    public void onActivityCreated(Bundle savedInstanceState)
     {
    super.onActivityCreated(savedInstanceState);
     }

    public void refreshadpater()
     {
          dh = new DBhelper(getActivity());
          cursor= dh.fetchAllcategories();
      String []columns= {"category_name"};
      int []textid = {R.id.text1};
       SimpleCursorAdapter adapter = new SimpleCursorAdapter(getActivity(), R.layout.list,    cursor, columns, textid);
        setListAdapter(adapter);

 }


    @Override
    public void onListItemClick(ListView l, View v, int position, long id)
     {  

       getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
       LinearLayout ii=(LinearLayout)getActivity().findViewById(R.id.lin);
         ii.setBackgroundResource(R.drawable.item_selector);

            int id1 =(int)id ;

      Subcategoryfragment fragment = (Subcategoryfragment)   getFragmentManager().findFragmentById(R.id.secondFragment);
      TextView tv = (TextView)getActivity().findViewById(R.id.sub);

      tv.setText("Sub-cat");
      if (fragment != null && fragment.isInLayout())
      {              
          fragment.refreshadpater1(id1);

// ii.setBackgroundResource(R.drawable.item_selector);

      } 
     }

}

list.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
    android:id="@+id/lin"
     android:layout_height="wrap_content"
     android:orientation="horizontal"
     android:background="@drawable/item_selector">

     <TextView android:id="@+id/text1"

       android:textAppearance="?android:attr/textAppearanceLarge"
       android:layout_marginTop="10dp"
       android:layout_marginLeft="10dp"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:minHeight="?android:attr/listPreferredItemHeight"

       />

  item_selector.xml


    <selector xmlns:android="http://schemas.android.com/apk/res/android">



    <item android:state_activated="true" >
    <shape >
        <solid android:color="#FF666666" />
    </shape>
</item>
<item android:state_pressed="true">
      <shape>
        <solid android:color="#FF666666" />
    </shape>
    </item>


</selector>
4

1 に答える 1

1

最初のタッチでフォーカスが与えられ、2 回目のタッチでクリックとして登録されます。最初のタッチがクリックとして登録されるように、フォーカスを無効にする必要があります。これでうまくいくはずです:

android:focusable="false"
android:focusableInTouchMode="false"
于 2012-07-25T12:49:35.737 に答える