Содержимое Edittext не обновляется, если я изменяю его - PullRequest
0 голосов
/ 01 марта 2012

Я задал этот вопрос вчера, но я написал его гораздо сложнее, чем я думаю, что эта проблема. Я очень смущен, и я нашел здесь несколько очень похожих вопросов, но ни один из них не решил мою проблему. Итак, у меня есть просмотр списка, каждый просмотр списка содержит изображение, текстовое представление и текст редактирования, но важен только текст редактирования. Если я нажму на текстовое представление, я хочу записать его содержимое для тестирования. Моя проблема в том, что если пользователь изменяет его, то после изменения я регистрирую то же самое. Поэтому, изменяя его в эмуляторе и не используя setText, он ничего не делает. У меня есть база данных, в каждом из списка есть текст редактирования (holder.quant).

класс MyAdapter расширяет ArrayAdapter {

    LayoutInflater inflat;
    ViewHolder holder;
    public MyAdapter(Context context, int textViewResourceId,
            ArrayList<EachRow> objects) 
    {

        super(context, textViewResourceId, objects);
        // TODO Auto-generated constructor stub
        inflat=LayoutInflater.from(context);
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        if(convertView==null)
        {
            convertView=inflat.inflate(R.layout.row_checkox, null);
            holder=new ViewHolder();
            holder.textView=(TextView)convertView.findViewById(R.id.textView111);
            holder.image=(ImageView)convertView.findViewById(R.id.imageView111);



            holder.quant = (EditText)convertView.findViewById(R.id.quantity);


            holder.image.setOnClickListener(CustomList.this);
            convertView.setTag(holder);
        }
        holder=(ViewHolder) convertView.getTag();



        holder.textView.setOnClickListener(new View.OnClickListener() {


          @Override
            public void onClick(View v) {

                 TextView tv = (TextView) v ;
            String text_of_clicked_textview = tv.getText().toString();

             final String[] ddata = text_of_clicked_textview.split(" "); //split the result using the spaces (so you could obtain the name, hotness and the other string you use)


                final long yy = Long.parseLong(ddata[0]);



                info.open();
                info.updateQuan(yy, holder.quant.getText().toString());
                Log.i("tagitagi", holder.quant.getText().toString());
                info.close();
            }
        });



        EachRow row= getItem(position);
        EachRow row2= getItem2(position);
        holder.quant.setText(row2.text);

        holder.textView.setText(row.text);
        NullPointerException
        holder.image.setTag(position);
        holder.quant.setTag(position);

        return convertView;
    }

    @Override
    public EachRow getItem(int position) {
        // TODO Auto-generated method stub
        return list.get(position);
    }
    public EachRow getItem2(int position) {
        // TODO Auto-generated method stub
        return list2.get(position);
    }

    private class ViewHolder
    {
        TextView textView;
        ImageView image;
        EditText quant;


    }
}

private class EachRow
{
    String text;
    boolean checkBool;
}

Я попробовал addTextChangedListener, но он выдает ошибку при использовании settext. Так в чем же проблема?

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 03 марта 2012

Мне удалось выяснить, как я могу заставить его работать.Holder.quant.gettext (). ToString не работает, даже если я щелкаю текстовое представление одной из строк, я не могу записать содержимое текстового представления.Держатель как-то блокирует его, я всегда буду регистрировать одно и то же текстовое представление ...

Так что мне нужно было создать новый метод:

public String getTextOfSelectedRow(int position) {
                       return list.get(position).text;
        }

Список содержит строки, приходит текст .textиз метода:

private class EachRow
    {
        String text;
        boolean checkBool;
    }

и определения держателя:

 public View getView(final int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub

            if(convertView==null)
            {
                convertView=inflat.inflate(R.layout.row_checkox, null);
                holder=new ViewHolder();
                holder.textView=(TextView)convertView.findViewById(R.id.textView111);
                holder.image=(ImageView)convertView.findViewById(R.id.imageView111);

                holder.quant = (EditText)convertView.findViewById(R.id.quantity);
           holder.button = (Button)convertView.findViewById(R.id.dialogQuan);
                holder.image.setOnClickListener(CustomList.this);
                convertView.setTag(holder);
            }
            holder=(ViewHolder) convertView.getTag();



            holder.button.setOnClickListener(new View.OnClickListener() {....

Итак, после этого метод onClick:

kmultip = getTextOfSelectedRow(position).toString();

Так что с этим я могуобратитесь к holder.quant или holder.textview или ко всему, что находится в ряду.Я до сих пор не знаю, почему простой holder.quant.getText (). ToString не работает, но с этим, поэтому обращение к позиции строки заставит его работать.

0 голосов
/ 04 марта 2012

first - Вы заполняете представление контентом, только если это новое представление. Это работает, только если у вас все содержимое списка статично. Вы уверены?

секунда - вы не используете функциональность ArrayAdapter. Смотрите здесь

0 голосов
/ 01 марта 2012

Позвольте мне понять это прямо.Если вы нажмете на TextView, вы хотите войти в содержимое EditText?

Почему бы не в методе onClick слушателя в TextView просто вызвать:

Log.d("EditText Content", holder.quant.getText().toString() );

Вам не нужен OnTextChangeListener для простого захвата содержимого в editText.

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