【问题标题】:Android EditText in ListView - keyboardListView 中的 Android EditText - 键盘
【发布时间】:2012-01-05 17:15:37
【问题描述】:

我的EditText 有问题。我使用以下适配器:

public class RowTextViewAdapter extends BaseAdapter {

...

  public View getView(int position, View convertView, ViewGroup parent) {

  ViewHolder holder = null;

    if (rowTitles.get(position).equals("edit")) {
        if(et == null){
            et = new EditText(activity);
            et.setText("Test");
        }
        return et;
    }
    else {
        convertView = new TextRow(activity);
        holder = new ViewHolder(((TextRow) convertView).getTextView(), ((TextRow) convertView).getImageView());
        convertView.setTag(holder);
        holder.getTextView().setText(StringManager.getInstance().getText(rowTitles.get(position), activity));
        holder.getImageView().setImageBitmap(assetController.getBitmap(additiveIcons.get(position) + ".png", null));
        return convertView;
    }
  }
}

ListActivity:

public class AppSettingActivity extends ListActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        adapter = new RowTextViewAdapter(this);
        adapter.addRowView("account", "arrowDw");
        adapter.addRowView("password", "arrowDw");
        setListAdapter(adapter);
   }

...

   protected void onListItemClick(ListView listView, View view, int position, long id) {
    switch (position) {
        case 0: accIsEditable = adapter.setEditable(position); break;
        case 1: 
            if(accIsEditable) {
                                    //TODO do something..
                break;
            }
            pwIsEditable = adapter.setEditable(position);
            break;
          ...
   }
}

如果我单击第一项,我会在 pos 上添加一个新的列表项。 1(位置:0、1、2、...)。 现在EditText 字段已添加到列表中。

ListView:
----------------------------          -------------------------    
Account                   v           Account                ^     
----------------------------    ==>   -------------------------     
Passowrd                  v           [::::::::EditText:::::::]      
----------------------------          -------------------------
//more..                              Password               v
----------------------------          -------------------------
                                      //more..
                                      -------------------------

如果我现在点击EditText 字段,它会显示虚拟键盘并失去EditText 的焦点。我再次单击,它获得焦点。但是如果我写东西,文本只会显示在EditText 字段中,如果我在写的时候不经常点击它...

有解决这个更新问题的想法吗?

【问题讨论】:

  • 这听起来非常像这个问题:stackoverflow.com/questions/6918494/…希望它有所帮助:-)
  • 嗯,我也遇到了这些焦点问题。我试过了:addTextChangedListener -> 调试正确 - 显示正确的文本。
  • 但是我不知道如何设置文本(EditText.setText("new listeners text")),没有例外。我还没有找到在 EditText 上再次设置 FOCUS 的方法。我唯一能做的就是打电话给getInstance().notifyDataSetChanged(),但在那之后我总是不得不再次手动点击EditText-field,它只写一个字母..使用EditText.requestFocus(),键盘没有出现,EditText不再可聚焦
  • 顺便说一句奇怪的事情:EditText 中的光标没有闪烁......就像 EditText 被冻结了一样。 :S
  • 不要将 EditText 放入 ListView。听起来您可以将 listView 换成 ScrollView 中的 LinearLayout! :D

标签: android listview android-edittext


【解决方案1】:

如果这仍然是一个问题,请查看此项目:Focusable EditText inside ListView

这些更改可能会有所帮助。

更改为列表视图:

<ListView
    android:id="@android:id/list" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent"
    android:descendantFocusability="beforeDescendants"
    />

更改为 mainfest.xml 中的活动:

<activity android:name= ".yourActivity" android:windowSoftInputMode="adjustPan"/>

【讨论】:

  • 谢谢,但我没时间了,所以......被拒绝了
  • android:windowSoftInputMode="adjustPan" 单独为我工作。
  • 完美!非常感谢!我将不得不探索每个设置的作用,但我毫不怀疑你只是为我节省了几个小时的绕圈跑......
  • 非常感谢。现在我的列表视图终于可以正常工作了。我通过以下方式以编程方式设置值:myActivity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
  • 对我来说必须在后裔之后。 android:descendantFocusability="afterDescendants"
【解决方案2】:

有时当您在清单活动或 xml 中使用android:windowSoftInputMode="stateAlwaysHidden"时,它会失去键盘焦点。因此,首先检查您的 xml 和清单中的该属性,如果它在那里,只需将其删除。在边活动android:windowSoftInputMode="adjustPan"将这些选项添加到清单文件后,将此属性添加到xml中的列表视图android:descendantFocusability="beforeDescendants"

【讨论】:

    猜你喜欢
    • 2014-02-20
    • 2012-10-03
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    相关资源
    最近更新 更多