我正在使用列表片段来显示项目列表,我想要这样一种方式,即每当点击项目时,它的背景应该改变并且也在改变,但是当第一次点击任何项目时没有改变它们在那个项目的背景。请帮帮我。我的代码在这里
片段类: -
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>
答案 0 :(得分:1)
第一次触摸是焦点,第二次触摸是点击。您需要禁用焦点,以便第一次触摸注册为单击。这应该适合你:
android:focusable="false"
android:focusableInTouchMode="false"