我使用listview.列表中的每个项目都包含一个edittext.当我点击一个edittext时,弹出软键盘,我点击的edittext会在短时间内获得焦点,然后丢失它.我必须再次点击才能真正获得焦点(为什么?)
(专注于文字和键盘)我滚动listview …
因为listview元素被回收,焦点重新出现在listtext中其他位置的edittext上,我想这是正常的但是为什么Android没有删除这个该死的焦点!?如果我的用户开始滚动,我怎么能对Android确定我不想再将焦点放在edittext上?
以下是活动的代码:
public class SimpleList extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user_picker);
ListView listview = (ListView)this.findViewById(R.id.user_picker_list);
new UserPickerAdapter(this, listview);
}
和适配器的代码:
public class UserPickerAdapter extends BaseAdapter {
private final LayoutInflater mInflater;
private String[] mUsers = {"Guib", "Jonas", "Fred", "Denis", "Arnold", "Francois", "David", "Alex", "Saskia", "Verner", "Anatole"};
public UserPickerAdapter(Context context, ListView listview) {
mInflater = LayoutInflater.from(context);
listview.setAdapter(this);
}
@Override
public int getCount() {
return mUsers.length;
}
@Override
public Object getItem(int position) {
return mUsers[position];
}
@Override
public long getItemId(int position) {
return position;
}
static private class Holder {
TextView username;
}
@Override
public View getView(int position, View convertView, ViewGroup arg2) {
Holder holder;
if (convertView != null) {
holder = (Holder) convertView.getTag();
} else {
holder = new Holder();
convertView = mInflater.inflate(R.layout.user_picker_list_item,null);
holder.username = (TextView) convertView.findViewById(R.id.user_picker_list_item_name);
convertView.setTag(holder);
}
String str = (String)getItem(position);
holder.username.setText(str);
return convertView;
}
以防万一,这里是’user_picker.xml’中的代码
‘user_picker_list_item.xml’中的那个