【发布时间】: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