2013-02-16 87 views
4

我正在写一个活动列出数据库中的一堆项目,并显示一个额外的列与数量。我实现了一个ArrayAdapter来显示我的自定义布局。 这里是适配器的最重要的部分代码:EditText失去重点点击

static class ViewHolder { 
    protected TextView text; 
    protected EditText editText; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view = null; 
    if (convertView == null) { 
     LayoutInflater inflator = context.getLayoutInflater(); 
     view = inflator.inflate(R.layout.rowquantitylayout, null); 
     final ViewHolder viewHolder = new ViewHolder(); 
     viewHolder.text = (TextView) view.findViewById(R.id.label); 
     viewHolder.editText = (EditText) view.findViewById(R.id.editText); 
     viewHolder.editText.addTextChangedListener(new TextWatcher() { 
      public void afterTextChanged(Editable s) { 
       Log.i(TAG, "Editable:" + s.toString()); 
      } 

      public void beforeTextChanged(CharSequence s, int start, 
        int count, int after) { 
      } 

      public void onTextChanged(CharSequence s, int start, 
        int before, int count) { 
      } 
     }); 
     view.setTag(viewHolder); 
     viewHolder.editText.setTag(list.get(position)); 
    } else { 
     view = convertView; 
     ((ViewHolder) view.getTag()).editText.setTag(list.get(position)); 
    } 
    ViewHolder holder = (ViewHolder) view.getTag(); 
    holder.text.setText(list.get(position).getDescription()); 
    holder.editText.setText("" + list.get(position).getQuantity()); 
    return view; 

} 

现在,当我试图把重点放在“的EditText”它失去焦点就在我点击它。它显示keboard,它甚至到达Log.i,但不让我改变它的值,因为它没有集中注意力。

感谢您的帮助

+0

你试图在机器人的EditText设置属性是这样的:focusableInTouchMode =“真” – 2013-02-16 12:27:49

+0

没有工作:( – Kohakukun 2013-02-16 13:06:52

+0

的[内部的ListView调焦的EditText](可能的复制http://stackoverflow.com/questions/2679948/focusable-edittext-inside-listview) – blahdiblah 2013-10-31 23:51:56

回答

0

试试这个:

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="0dip" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:ems="10" 
    android:inputType="textShortMessage" > 
    <requestFocus /> 
</EditText> 
+0

仍然不能工作,我不知道它是否有帮助,编辑文本是在相对布局内 – Kohakukun 2013-02-16 13:05:08

17

我有同样的问题,我搜索了一个答案。 这里是一个回答类似的问题:https://stackoverflow.com/a/9338694/1448661

你必须把一条线在你的活动清单:

android:windowSoftInputMode="adjustPan" 

和你的ListView必须有这行太:

android:descendantFocusability="beforeDescendants" 

现在,您可能会面临另一个问题,即滚动时文本丢失。如果发生这种情况,请参阅本教程: http://vikaskanani.wordpress.com/2011/07/27/android-focusable-edittext-inside-listview/

希望这会有所帮助。 Goui

+0

谢谢,我会尽快尝试这个。常见的任务是如此复杂? – Kohakukun 2013-02-19 13:02:36

+1

我在stackoverflow上发现了另一个相同的解决方案,但后代焦点是afterDescendants。 http://stackoverflow.com/a/15294709/1799322 – edisonthk 2013-09-28 08:29:01