解决共存问题间断的研究了一些时间,对于两个控件的属性熟悉是最重要的
目前存在这个问题,输入法能够正确的顶起listview,但是点击listview的一个item,整个列表就会自动的滚动到底部,一开始以为是listview自己更新了数据,后来发现其实就是listview的一个属性的问题,这个属性的代码中进行控制才可以正确的显示
一开始在adapter中设置,监听position然后发现到最后一个了,就设置listview的
if (position == getInfos().size()-1) {
((HaomsgInfoActivity)context).lv_sms_list.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_DISABLED);
}这种情况显然不够完整,需要根据情况做这些处理,测试组提出问题后,就这块进行了重新处理,前提是少费事,少改动是这么处理的:
if (scrollState== SCROLL_STATE_FLING) {
lv_sms_list.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_DISABLED);
}lv_sms_list.setOnScrollListener(new OnScrollListener() { //全部代码
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
invokeInput();
if (!noNeedLoad) { //检测如果不是向下滑动,而是向上滑动
if (scrollState== SCROLL_STATE_FLING) { //滑动静止再去加载不然会执行多遍 2013-8-28 11:24 yang
// 加载分页 ,不用状态锁的话可以考虑线程队列
if (!isLoadingPage && view.getFirstVisiblePosition() == 0) {
Log.v("aaa", "!isLoadingPage = "+!isLoadingPage);
Log.v("aaa", "view.getFirstVisiblePosition() = "+view.getFirstVisiblePosition());
if (view.getLastVisiblePosition() + 1 == view.getCount()) {
// 末尾也在当前页则不用加载分页了,否则在select后末尾项看不全
Log.v("aaa", "view.getLastVisiblePosition() + 1 = "+(view.getLastVisiblePosition() + 1));
Log.v("aaa", "view.getCount() = "+view.getCount());
} else{
getNetMessage(type);
getNewPageDate(currentIndex, pageSize,REFRESH_LISTVIEW_ADD_NEWPAGE);
}
}
}
}
if (scrollState== SCROLL_STATE_FLING) {
lv_sms_list.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_DISABLED);
}
}设置了的自动滚动属性之后,以后不管怎么改都不可以改过来,
=================================================
et_send_content.setOnFocusChangeListener(new OnFocusChangeListener() { //监听焦点变化也就是键盘的弹起
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus&&getInputManager().isActive()) {
lv_sms_list.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
adapter.notifyDataSetChanged();
}
}
});
=================================================
et_send_content.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_DOWN) {
lv_sms_list.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
}
return false;
}
});这里是设置ListView的滑动属性为总是滑动,因为点击了输入框,键盘要被弹起来了,这个时候listView就要被滑动了主题目的,1) listview滑动静止设置自动滚动属性为不可滑动 2)点击edit开始键入字符时listview自动被顶起
注意:监听焦点变化,不如监听点击(点击相应时间更早,比焦点更快的预处理)
版权声明:本文为u013017597原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。