O controle giratório ANDROID não mostra o último item selecionado
Mas não consigo encontrar a solução para isso. Eu sei que isso pode ser perguntado antes. Mas é realmente diferente de outras questões.
Estou tentando implementar um botão giratório em uma pilha de cartões. Eu tenho um conjunto de cartões, cada cartão contém algumas tarefas. Em um dos meus cartões contém um botão giratório.
Eu criei com sucesso o spinner e os itens do spinner são gerados somente a partir do banco de dados. Os itens giratórios são mostrados sem falhas. Aqui o girador deve perguntar ao gênero. Ou seja, masculino e feminino. minha lista é[MALE, FEMALE]
O botão giratório mostra primeiro o sexo masculino e depois o feminino. está tudo funcionando bem.
Aqui está o meu problema. Se selecionar feminino. O botão giratório deve mostrar esse item. Mas é sempre mostra masculino.
Abaixo está o código
_listSpinner=(Spinner)convertView.findViewById(R.id.listSpinner);
ArrayList<HashMap<String, String>> TempOptionArrays=new ArrayList<HashMap<String, String>>();
TempOptionArrays=db.getOptins(QuestionId,taskIdBundle);
for (int i = 0; i < TempOptionArrays.size(); i++) {
SpinnerOptions.add(TempOptionArrays.get(i).get(Constants.ANSWER_SUGGESTION_TEXT_FIELD_COMMON));
}
Log.e("SpinnerOptions--",SpinnerOptions.toString());
Spinner spinner = (Spinner) convertView.findViewById(R.id.listSpinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, SpinnerOptions);
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner.setAdapter(adapter);
Onde estou cometendo erro?
Métodos de ouvinte implementados
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String item = parent.getItemAtPosition(position).toString();
// Showing selected spinner item
Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
o ouvinte liga quando os cartões são criados apenas pela primeira vez. Aquele tempo brindou o valor masculino. Então não é brindado nenhum valor.
Código completo
package com.panenviron.fragments;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
import com.jmedeisis.draglinearlayout.DragLinearLayout;
import com.panenviron.R;
import com.panenviron.references.Constants;
import com.panenviron.userfunctions.ConnectionDetector;
import com.panenviron.userfunctions.Database;
import com.panenviron.userfunctions.UserFunctions;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import link.fls.swipestack.SwipeStack;
public class TaskCardListShow extends Fragment implements SwipeStack.SwipeStackListener, View.OnClickListener {
ConnectionDetector cd;
Database db;
UserFunctions uf;
Context context;
SharedPreferences pref;
public int cardCounter;
ArrayList<HashMap<String, String>> cardList;
ArrayList<HashMap<String, String>> cardListArrayToAdapter;
ArrayList<ArrayList<HashMap<String, String>>> multiChoiceSelectedList;
ArrayList<HashMap<String, String>> tmpList = new ArrayList<HashMap<String, String>>();
private ArrayList<String> mData;
private ArrayList<String> LayOutData;
private SwipeStack mSwipeStack;
private SwipeStackAdapter mAdapter;
AutoCompleteTextView autoTextView;
int taskIdBundle;
public TaskCardListShow() {
}
public static TaskCardListShow newInstance(List<String> dataList) {
TaskCardListShow _TaskCardListShow = new TaskCardListShow();
return _TaskCardListShow;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.task_card_list_show, container, false);
try {
uf = new UserFunctions(getActivity());
cd = new ConnectionDetector(getActivity());
db = new Database(getActivity());
context=getActivity().getApplicationContext();
pref = getActivity().getApplicationContext().getSharedPreferences(Constants.USER_PREF, 0); // 0 - for private mode
} catch (Exception e) {
e.printStackTrace();
}
try {
Bundle bundle = this.getArguments();
if (bundle != null) {
taskIdBundle = bundle.getInt(Constants.TASK_ID_FIELD_COMMON, 0);
Toast.makeText(getActivity().getApplicationContext(),"task id --"+taskIdBundle, Toast.LENGTH_SHORT).show();
}
cardCounter=db.getNoOfCardsToDisplay(taskIdBundle);
cardList=db.getTaskQuestionsAsPerWorkId(taskIdBundle);
cardListArrayToAdapter = new ArrayList<HashMap<String, String>>();
//fillStackCard();
} catch (Exception e) {
e.printStackTrace();
}
//final RelativeLayout snackbarlocation=(RelativeLayout)view.findViewById(R.id.snackbarlocation);
FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.fab);;
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar snack = Snackbar.make(view, "Do you want to close this task ?", Snackbar.LENGTH_LONG)
.setAction("Yes !.",new View.OnClickListener() {
@Override
public void onClick(View view) {
removeTaskCardFragment();
}
});
View Snackiew = snack.getView();
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams)Snackiew.getLayoutParams();
params.topMargin = 100;
params.gravity = Gravity.TOP;
Snackiew.setLayoutParams(params);
snack.show();
}
});
mSwipeStack = (SwipeStack) view.findViewById(R.id.swipeStack);
mData = new ArrayList<>();
LayOutData = new ArrayList<>();
//mAdapter = new SwipeStackAdapter(mData,LayOutData);
mAdapter = new SwipeStackAdapter(cardList);
mSwipeStack.setAdapter(mAdapter);
mSwipeStack.setListener(this);
context=getActivity().getApplicationContext();
//cardCounter=10;// write function for getting card count.
return view;
}
@Override
public void onClick(View v) {
}
@Override
public void onViewSwipedToRight(int position) {
String swipedElement = mAdapter.getItem(position);
Log.e("position right-", String.valueOf(position));
}
@Override
public void onViewSwipedToLeft(int position) {
String swipedElement = mAdapter.getItem(position);
Log.e("position-", String.valueOf(position));
}
@Override
public void onStackEmpty() {
Log.e("im at empty ",tmpList.toString());
removeTaskCardFragment();
}
public void removeTaskCardFragment(){
FragmentManager manager = getActivity().getSupportFragmentManager();
FragmentTransaction mFragmentTransaction = manager.beginTransaction();
TaskCardListShow _TaskCardListShowFragment = new TaskCardListShow();
mFragmentTransaction.remove(_TaskCardListShowFragment);
mFragmentTransaction.commit();
manager.popBackStack();
}
public class SwipeStackAdapter extends BaseAdapter implements CompoundButton.OnCheckedChangeListener,AdapterView.OnItemSelectedListener {
private ArrayList<HashMap<String, String>> _taskCardDataArray;
TextView _textViewCard;
ArrayList<HashMap<String, String>> suggestionAnswer;
LinearLayout nextCardButtonLayOut;
ImageView _nextCardButton;
ArrayList<String> SpinnerOptions=new ArrayList<String>();
Spinner _listSpinner;
private RadioGroup radioGroup;
private RadioButton radioButton;
int pos;
String likertScaleText;
//private List<String> LayOutData;
DragLinearLayout dragDropAndroidLinearLayout;
public SwipeStackAdapter(ArrayList<HashMap<String, String>> taskCardDataArray) {
this._taskCardDataArray = taskCardDataArray;
//this.LayOutData = Ldata;
}
@Override
public int getCount() {
return _taskCardDataArray.size();
}
@Override
public String getItem(int position) {
return String.valueOf(_taskCardDataArray.get(position));
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
String LName=_taskCardDataArray.get(position).get(Constants.LAYOUT_NAME_FIELD_COMMON).toLowerCase();
likertScaleText="";
suggestionAnswer=new ArrayList<HashMap<String, String>>();
String QuestionText=_taskCardDataArray.get(position).get(Constants.QUESTION_TEXT_FIELD_COMMON);
if(TextUtils.isEmpty(QuestionText)){
QuestionText="Your QUESTION text will come here now it is null from api";
}
final int QuestionId= Integer.parseInt(_taskCardDataArray.get(position).get(Constants.QSTN_ID_FIELD_COMMON));
int IS_SUGGEST= Integer.parseInt(_taskCardDataArray.get(position).get(Constants.IS_SUGGEST_FIELD_COMMON));
if(IS_SUGGEST==0){
suggestionAnswer=db.getSuggestAnswerForQuestion(QuestionId,taskIdBundle);
}else{
}
try {
int id = getActivity().getApplicationContext().getResources().
getIdentifier(LName, "layout", getActivity().getPackageName());
convertView = getActivity().getLayoutInflater().inflate(id, parent, false);
tmpList = new ArrayList<HashMap<String, String>>();
switch(LName.toLowerCase()){
case "tc":
// some type of cards functionalities
break;
case "mc":
// some type of cards functionalities
break;
case "mci":
// some type of cards functionalities
break;
case "lks":
// some type of cards functionalities
break;
case "dp":
// some type of cards functionalities
break;
case "txt":
// some type of cards functionalities
break;
case "list":
_textViewCard=(TextView)convertView.findViewById(R.id.textViewCard);
_textViewCard.setText(QuestionText);
final String finalQuestionTextLIST = QuestionText;
_listSpinner=(Spinner)convertView.findViewById(R.id.listSpinner);
ArrayList<HashMap<String, String>> TempOptionArrays=new ArrayList<HashMap<String, String>>();
TempOptionArrays=db.getOptins(QuestionId,taskIdBundle);
for (int i = 0; i < TempOptionArrays.size(); i++) {
SpinnerOptions.add(TempOptionArrays.get(i).get(Constants.ANSWER_SUGGESTION_TEXT_FIELD_COMMON));
}
Log.e("SpinnerOptions--",SpinnerOptions.toString());
Spinner spinner = (Spinner) convertView.findViewById(R.id.listSpinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, SpinnerOptions);
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner.setAdapter(adapter);
/*
// Creating adapter for spinner
final ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>
(getActivity(), android.R.layout.simple_spinner_item, SpinnerOptions);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
_listSpinner.setAdapter(dataAdapter);
//dataAdapter.notifyDataSetChanged();
_listSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
Toast.makeText(parentView.getContext(), "Selected ---: " + SpinnerOptions.get(position), Toast.LENGTH_LONG).show();
dataAdapter.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
}
});*/
break;
case "arr":
break;
}
} catch (Exception e) {
e.printStackTrace();
}
Log.e("position=", String.valueOf(position));
return convertView;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String item = parent.getItemAtPosition(position).toString();
// Showing selected spinner item
Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}
}