Kgr*_*ver 7 java android scroll android-listview motionevent
我试图让两个并排的ListViews在某种程度上像GridView一样.我没有使用GridView的原因是因为不支持Staggered Look.无论如何,到目前为止,我有以下代码:
< - 旧的,现在不相关的代码 - >
编辑:
我在@Sam建议时做了并使用了以下代码:
lv1.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (touchSource == null) {
touchSource = v;
}
if (v == touchSource) {
lv2.dispatchTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_UP) {
clickSource = v;
touchSource = null;
}
}
return false;
}
});
lv1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (parent == clickSource) {
//my own code here
}
}
});
lv1.setOnScrollListener(new OnScrollListener() {
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (view == clickSource) {
}
boolean loadMore = /* maybe add a padding */
firstVisibleItem + visibleItemCount + 10 >= totalItemCount;
if (loadMore) {
//add items, load more
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
});
lv2.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (touchSource == null) {
touchSource = v;
}
if (v == touchSource) {
lv1.dispatchTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_UP) {
clickSource = v;
touchSource = null;
}
}
return false;
}
});
lv2.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (parent == clickSource) {
}
}
});
lv2.setOnScrollListener(new OnScrollListener() {
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (view == clickSource) {
}
boolean loadMore = /* maybe add a padding */
firstVisibleItem + visibleItemCount + 2 >= totalItemCount;
if (loadMore) {
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
});
Run Code Online (Sandbox Code Playgroud)
我也在其中一个列表上使用标题来创建一个Staggered Effect,我需要不惜一切代价保持这种错开.这主要是工作(上面的代码),但它很多时候都是unyncs.我已经发现这只是在我进行短暂的轻扫时.我不知道为什么,我找不到一个好的解决方案.在我看来,上述逻辑应该有效.
另外,万一重要,我使用UniversalImageLoader加载照片和一个简单的EndlessScroll逻辑来加载更多照片(直接调用adapter.notifyDataSetChanged()).这个东西虽然看起来不太相关.即使照片被加载,我仍然可以看到它取消.
我想明确一点:如果我做短暂的滑动(有时只是一般的重复滚动),我可以随意取消同步列表.
任何帮助表示赞赏.谢谢.
编辑2:
然而要找到一个好的解决方案.以下是我发现的解决方案不太有效:
有任何想法吗?谢谢.
好的,所以我最终使用了Linear Layout Method
(参见问题)并使用 setTag 来使 onItemClickListener 工作,并使用 CustomScrollView 实现来使无限列表工作。
基本上,两个线性布局水平堆叠在滚动视图内。它工作得相当好,并且加载速度更快。
另外,如果有帮助的话,加载我的图像SmartImageView 。
如果有人想要代码,我也许可以发布部分代码。
归档时间: |
|
查看次数: |
3409 次 |
最近记录: |