Permalänk

Android Listview

Hej,

Har ett litet problem som jag inte kan komma underfund med.
Jag har skapat en Dialog med en custom Listview som innehåller Radiobuttons.
Klass 'a' är mitt DialogFragment och klass 'b' är min ArrayAdapter.
Det jag vill veta är hur jag från klass 'a' kan få reda på vilken Radiobutton som har blivit vald i klass 'b'
All hälp mottages, är rätt ny inom detta.
Har provat att sätta en onClickItemListener på min listview i klass 'a', men eftersom det är en Radiobutton jag trycker på och inte en rad så verkar den inte som registrera några onClick.
Har försökt att googla lite men inte hittat något vettigt.

Klass 'a' kod:

@Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LayoutInflater inflater = getActivity().getLayoutInflater(); final View fishSpeciesLayout = inflater.inflate(R.layout.dialog_fish_species, null); final String[] values = new String[] { "Android", "iPhone", "WindowsMobile", "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2", "Android", "iPhone", "WindowsMobile" }; final ArrayList<String> list = new ArrayList<String>(); for (int i = 0; i < values.length; ++i) { list.add(values[i]); } final FishSpeciesArrayAdapter adapter = new FishSpeciesArrayAdapter(getActivity(), values); listViewFishSpecies = (ListView) fishSpeciesLayout.findViewById(R.id.listViewFishSpecies); listViewFishSpecies.setAdapter(adapter); return builder.create();

Klass 'b' kod:

public FishSpeciesArrayAdapter(Context context, String[] values) { super(context, -1, values); this.context = context; this.values = values; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (convertView == null) { convertView = inflater.inflate(R.layout.fish_species_row_layout, parent, false); holder = new ViewHolder(convertView); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.radioButton.setTag(position); holder.radioButton.setText(values[position]); if (position == selectedPosition) { holder.radioButton.setChecked(true); } else { holder.radioButton.setChecked(false); } holder.radioButton.setOnClickListener(onStateChangeListener(holder.radioButton, position)); return convertView; } private View.OnClickListener onStateChangeListener(final RadioButton radioButton, final int position) { return new View.OnClickListener() { @Override public void onClick(View v) { if (radioButton.isChecked()) { selectedPosition = position; Log.i("Selected value is", "" + radioButton.getText().toString()); } else { selectedPosition = -1; } notifyDataSetChanged(); } }; } private static class ViewHolder { private RadioButton radioButton; public ViewHolder(View v) { radioButton = (RadioButton) v.findViewById(R.id.radioButtonFishSpecies); } }

Visa signatur

Var snäll och tänk på miljön innan du väljer att skriva ut svaret ovan

Permalänk
Hedersmedlem
Permalänk

Detta hjälpte faktiskt mig att lösa det, att ta bort Radiobutton som klickbar view och låta Listview ta hand om onClick gjorde att jag kunde hämta vilken rad som blev tryckt och på så sätt koppla det till vilken Radiobutton som blev vald.
Tackar så mycket för hjälpen!

Visa signatur

Var snäll och tänk på miljön innan du väljer att skriva ut svaret ovan