diff --git a/AndorsTrail/res/layout/custom_checkedlistitem_layout.xml b/AndorsTrail/res/layout/custom_checkedlistitem_layout.xml index 0f7554721..e02123358 100644 --- a/AndorsTrail/res/layout/custom_checkedlistitem_layout.xml +++ b/AndorsTrail/res/layout/custom_checkedlistitem_layout.xml @@ -1,5 +1,5 @@ - choicesAdapter = new ArrayAdapter(getContext(), R.layout.custom_checkedlistitem_layout, getEntries()) { - @Override - public View getView(int position, View convertView, ViewGroup parent) { - View v = super.getView(position, convertView, parent); -// choicesList.setItemChecked(position, getValueIndex() == position); - v.setSelected(getValueIndex() == position); - return v; - } - }; + ArrayAdapter choicesAdapter = new ArrayAdapter(getContext(), R.layout.custom_checkedlistitem_layout, getEntries()); choicesList.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.MATCH_PARENT, ListView.LayoutParams.WRAP_CONTENT)); choicesList.setAdapter(choicesAdapter); choicesList.setOnItemClickListener(new AdapterView.OnItemClickListener() { diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/SelectableTextView.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/SelectableTextView.java new file mode 100644 index 000000000..2250d7456 --- /dev/null +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/SelectableTextView.java @@ -0,0 +1,62 @@ +package com.gpl.rpg.AndorsTrail.view; + +import android.annotation.TargetApi; +import android.content.Context; +import android.os.Build; +import android.util.AttributeSet; +import android.widget.Checkable; +import android.widget.TextView; + +//Thanks to https://stackoverflow.com/questions/6205339/listview-item-selected-state-not-working + +public class SelectableTextView extends TextView implements Checkable { + private static final int[] CHECKED_STATE_SET = { + android.R.attr.state_checked + }; + + private boolean mChecked; + + public SelectableTextView(Context context) { + super(context); + } + + public SelectableTextView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public SelectableTextView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + public SelectableTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + @Override + public void setChecked(boolean checked) { + if (mChecked != checked) { + mChecked = checked; + refreshDrawableState(); + } + } + + @Override + public boolean isChecked() { + return mChecked; + } + + @Override + public void toggle() { + setSelected(!mChecked); + } + + @Override + protected int[] onCreateDrawableState(int extraSpace) { + final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); + if (isChecked()) { + mergeDrawableStates(drawableState, CHECKED_STATE_SET); + } + return drawableState; + } +}