ListView의 EditText-fields에 문제가 있습니다. 내가 스크롤 후 일부 설정을 재설정 (selectAllOnFocus) 및 선택 커서 바나나갑니다.Listview의 EditText 스크롤 후 이상한 선택 동작
사용자 지정 ArrayAdapter 및 사용자 지정 데이터 개체를 사용하여 목록보기를 만들었습니다. 이 경우 객체는 하나의 String 만 보유합니다 (단순화하기 위해).
내 활동
// adapter + content
List<ListviewObject> listViewContent = new ArrayList<ListviewObject>();
for(int i = 0; i < 50; i++) {
listViewContent.add(new ListviewObject("num: " + i));
}
adapter = new CustomListAdapter(AddNewPerson.this, R.layout.list_item, listViewContent);
// list
ListView mListView = (ListView)findViewById(R.id.sample_list);
mListView.setItemsCanFocus(true);
mListView.setAdapter(adapter);
@Override
public View getView(int position, View convertView, ViewGroup parent) {
HolderObject holder = null;
if(convertView == null) {
convertView = mLayoutInflater.inflate(layoutResourceId, parent, false);
holder = new HolderObject();
holder.name = (TextView) convertView.findViewById(R.id.txt);
convertView.setTag(holder);
} else {
holder = (HolderObject) convertView.getTag();
}
holder.lvObject = items.get(position);
setNameTextChangeListener(holder);
// Retrieve the correct value
holder.name.setText(holder.lvObject.getName());
return convertView;
}
public static class HolderObject {
ListviewObject lvObject;
TextView name;
}
private void setNameTextChangeListener(final HolderObject holder) {
holder.name.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// Update the value
holder.lvObject.setName(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void afterTextChanged(Editable s) { }
});
}
는 내가 설정 한 다른 스레드에있는 모든 focusproblems 해결하려면 내 어댑터 : 활동 XML의 목록보기
android:descendantFocusability="beforeDescendants"
에
.setItemsCanFocus(true)
을
android:windowSoftInputMode="adjustPan"
매니페스트 XML
텍스트를 집중하고 편집하는 것이 좋습니다. 스크롤 할 때 올바른 값이 유지되고이 모든 것이 제대로 작동하는 것 같습니다.
스크롤하기 전에 일부 EditText를 클릭하기 전에 이런 일이 발생합니다. 나는 아래로 스크롤 위로 다시, 그리고 이전과 같은 클릭을 한 후
를 (마지막, 흐림을 집중 한 초점을 맞추고 클릭, 컨텐츠를 선택한 경우)이 발생합니다.
http://stackoverflow.com/questions/20406472/editext-in-listview-loses-focus-when-pressed-on-android-4-x이 링크를 참조하십시오. – duggu
as per my 지식 목록보기에서 편집 텍스트를 사용하는 것은 나쁜 습관입니다. – duggu
. 따라서 EditText 대신 TextView를 사용하여 클릭/블러에서 대체하는 것이 가장 실용적인 옵션처럼 보이거나 심지어 convertView를 재사용 할 수도 있지만 EditText는 그 내부에 있지 않습니다 (getView에서 다시 작성). 마지막 설정에서 더 많은 단점을 보았 기 때문에 나쁜 행동을 통해 해킹하는 느낌이 들지 않습니다. – user3729954