Значение EditText в пользовательском диалоге - PullRequest
2 голосов
/ 06 декабря 2011

У меня есть ListActivity , onClick каждого элемента. Появляется Пользовательский диалог . Пользовательский диалог содержит счетчик и EditText. Теперь я не являюсь возможность получить значение EditText, в то время как отладочное значение EditText будет пустым или "".

 protected void onListItemClick(ListView l, View v, int position, long id) 
    {
    super.onListItemClick(l, v, position, id);
    positionList=position;

    HashMap<String,Object>temp =(HashMap<String ,Object>)list.get(position);

    LayoutInflater inflater = (LayoutInflater) CommonScreen6.this.getSystemService(LAYOUT_INFLATER_SERVICE);
    View layout = inflater.inflate(R.layout.answer_screen,null);

    AlertDialog.Builder alertDialog=new AlertDialog.Builder(CommonScreen6.this);
    alertDialog.setTitle("Select Option");
    alertDialog.setView(layout);

    Spinner answerList=(Spinner)layout.findViewById(R.id.spinnerAnswerList);

    ArrayAdapter<String> adapterAnswerType = new ArrayAdapter<String> (CommonScreen6.this, android.R.layout.simple_spinner_item,(ArrayList<String>)temp.get(Constants.answerDesc));

    adapterAnswerType.setDropDownViewResource(android.R.layout.select_dialog_singlechoice);

    answerList.setAdapter(adapterAnswerType);            
    answerList.setOnItemSelectedListener(this);

    ArrayList<String> answerDescList=(ArrayList<String>)temp.get(Constants.answerDesc);

    answerList.setSelection(answerDescList.indexOf(temp.get(Constants.defaultAnswerDesc)));

    alertDialog.setPositiveButton("Submit",new DialogInterface.OnClickListener() 
      {

    @Override
    public void onClick(DialogInterface dialog, int which)
               {
      LayoutInflater inflater = (LayoutInflater) CommonScreen6.this.getSystemService(LAYOUT_INFLATER_SERVICE);
      View layout = inflater.inflate(R.layout.answer_screen,null);
      EditText editText=(EditText)layout.findViewById(R.id.remark);
      String remark=editText.getText().toString();

      HashMap<String,Object>temp =(HashMap<String ,Object>)list.get(positionList);
            temp.put(Constants.remark, remark);
            adapter.notifyDataSetChanged();
           }
  });
 }

1 Ответ

0 голосов
/ 06 декабря 2011

Причина, по которой вы не получаете никаких значений, заключается в том, что вы заново накачиваете макет непосредственно перед чтением значений, таким образом сбрасывая значения до значений по умолчанию. Я полагаю, что вы хотели бы найти ViewById по аргументу v, который был дан методу onListItemClick, вместо того, чтобы перефокусировать макет.

То есть вместо

LayoutInflater inflater = (LayoutInflater) CommonScreen6.this.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.answer_screen,null);
EditText editText=(EditText)layout.findViewById(R.id.remark);

попробуйте что-то вроде

EditText editText=(EditText)v.findViewById(R.id.remark);

Вам может потребоваться сделать переменную v окончательной, чтобы это работало. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...