我正在使用列表片段来显示项目列表,并且我希望这样一种方式:每当单击该项目时,其背景也应该改变并且也在改变,但是当第一次单击任何项​​目时,它们的背景都没有变化项目。请帮助我。我的代码在这里

片段类:-

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>

最佳答案

第一次触摸使焦点,第二次触摸为点击。您需要禁用焦点,以便第一触摸注册为单击。这应该为您解决问题:

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

关于android - 在列表 fragment 中第一次单击列表项时,请勿更改项目背景,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11649037/

10-11 22:37
查看更多