Ezr*_*rou 6 android listview android-arrayadapter notifydatasetchanged
我有一个ListView适配器,当我修改我的TextView,我呼吁notifyDataSetChanged()对addTextChangeListener()方法。但是我的 TextView 失去了焦点。我如何保持焦点,覆盖notifyDataSetChanged()?
我这样做但没有用
@Override
public void notifyDataSetChanged(){
TextView txtCurrentFocus = (TextView) getCurrentFocus();
super.notifyDataSetChanged();
txtCurrentFocus.requestFocus();
}
Run Code Online (Sandbox Code Playgroud)
您可以扩展ListView类并重写requestLayout()方法。ListView当完成更新并窃取焦点时,会调用该方法。因此,在该方法结束时,您可以将焦点返回到您的TextView.
public class ExampleListView extends ListView {
private ListViewListener mListener;
public ExampleListView(Context context) {
super(context);
}
public ExampleListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ExampleListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void requestLayout() {
super.requestLayout();
if (mListener != null) {
mListener.onChangeFinished();
}
}
public void setListener(ListViewListener listener) {
mListener = listener;
}
public interface ListViewListener {
void onChangeFinished();
}
}
Run Code Online (Sandbox Code Playgroud)
并将侦听器设置为此ListView
ExampleListView listView = (ExampleListView) view.findViewById(R.id.practice_exercises_list);
listView.setListener(new ExampleListView.ListViewListener() {
@Override
public void onChangeFinished() {
txtCurrentFocus.requestFocus();
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2109 次 |
| 最近记录: |