在列表片段中第一次单击列表项时,不会更改项目的背景

时间:2012-07-25 11:50:10

标签: android background simplecursoradapter listitem android-listfragment

我正在使用列表片段来显示项目列表,我想要这样一种方式,即每当点击项目时,它的背景应该改变并且也在改变,但是当第一次点击任何项目时没有改变它们在那个项目的背景。请帮帮我。我的代码在这里

片段类: -

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>

1 个答案:

答案 0 :(得分:1)

第一次触摸是焦点,第二次触摸是点击。您需要禁用焦点,以便第一次触摸注册为单击。这应该适合你:

android:focusable="false"
android:focusableInTouchMode="false"