我有以下代码显示ListFragment。选择一行后,我将行的背景变为红色。如果我单击另一行,则会变为红色,但第一个选定的行仍为红色。
如何为取消选择的行重新调整颜色?我尝试过一些事情,例如clearCoices(),list.invalidate(),list.requestLayout(),list.refreshDrawableState。他们似乎都没有工作。
提前谢谢,马特
public class CarerDetailsFragment extends ListFragment{
private static final String TAG = CarerDetailsFragment.class.getSimpleName();
MySimpleArrayAdapter myAdapter;
TwoDimensionalArrayList rotaArray;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle b = getArguments();
if(b != null){
rotaArray = (TwoDimensionalArrayList) b.get("rotaArray");
Log.e(TAG, "rotaArray in CarerDetailsFragment has size " + rotaArray.size());
}else{
Log.e(TAG, "Bundle b = null!!!!!!!!!!!");
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.carerdetailsfragmentlayout, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
myAdapter = (MySimpleArrayAdapter) new MySimpleArrayAdapter(getActivity(), rotaArray);
setListAdapter(myAdapter);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Log.e(TAG, "onListItemClick");
l.clearChoices();
v.setBackgroundColor(Color.parseColor("#FF0000"));
String name;
String actTimeIn;
String actTimeOut;
String doubleUpValue;
String status;
String startTime;
String clientID;
String notes;
Bundle b = new Bundle();
b.putString("name", name);
b.putString("actTimeIn", actTimeIn);
Fragment newFragment = new CarerPurposeOfCallFragment();
newFragment.setArguments(b);
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.carerpurposeofcall, newFragment);
//transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
}
private class MySimpleArrayAdapter extends ArrayAdapter<String> {
private final Context context;
private final ArrayList<?> list;
String justTime;
String statusField;
String callID;
String needName;
public MySimpleArrayAdapter(Context context, ArrayList<?> list) {
super(context, R.layout.rotarowlayout);
Log.e(TAG, "inside adapter constructor");
this.context = context;
this.list = list;
//Log.e(TAG, "list has size of " + this.list.size());
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.rotarowlayout, parent, false);
TextView startTime = (TextView) rowView.findViewById(R.id.rowstarttime);
TextView duration = (TextView) rowView.findViewById(R.id.rowduration);
TextView status = (TextView) rowView.findViewById(R.id.rowstatus);
TextView name = (TextView) rowView.findViewById(R.id.rowclientname);
final ImageView noteStatus = (ImageView)rowView.findViewById(R.id.notestatus);
return rowView;
}
@Override
public int getCount() {
if(this.list != null){
return this.list.size();
}else{
return 0;
}
}
}// end of adapter class
}//end of CarerListFragment
答案 0 :(得分:0)
使用myAdapter.toggleSelection(position);
选择或取消选择。
您可能需要selectedList
并在切换时进行检查。