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