我想让两个并排的ListViews在一定程度上像GridView一样工作。我没有使用GridView的原因是因为没有支持Staggered Look。不管怎么说,我有以下的代码至今:并行同步两个ListViews Android
< - 老了,现在不相关的代码 - >
编辑:
我一样@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) {
}
});
我也使用标题在其中一个列表中创建交错效果,我需要不惜一切代价保持这种交错状态。这主要是工作(上面的代码),但它很多时间都不一致。我已经知道这只是当我有短小的挥手。我不知道为什么,我找不到一个好的解决方案。在我看来,上述逻辑应该起作用。此外,为了防万一,我使用UniversalImageLoader加载照片和一个简单的EndlessScroll逻辑来加载更多照片(直接调用adapter.notifyDataSetChanged())。这东西似乎并不太相关。即使照片被加载,我仍然可以看到它不同步。
我想清楚一点:如果我做短暂的滑动操作(有时候只是在一般情况下重复滚动),我可以随意同步列表。
任何帮助表示赞赏。谢谢。
编辑2:
还没有找到一个好的解决办法。下面是我发现不太工作的解决方案:
- 上述解决方案:unsyncs过于频繁
- Pinterest List View:没有OnScrollListener/onItemClick分化
- StaggeredGridView:没有onScrollListener
- Stag Project :否onItemClick监听器
- Linear Layout Method:否onItemClick监听器
有什么想法?谢谢。
显然Pinterest使用这样的布局,如果您在[“android pinterest”](http://stackoverflow.com/search?q= [android] + pinterest)中搜索Stack Overflow,可以找到各种方法。 – Sam 2013-02-27 00:29:26
是的,我意识到这一点。我也一直在研究这个。实际上,我从Pinterest样式网格的另一个答案中获得了部分源代码,https://github.com/vladexologija/PinterestListView,但我不认为它解决了区分onItemClicks和TouchEvents与滚动相关的问题。 – Kgrover 2013-02-27 00:32:19
我从未使用Pinterest应用,但当有人问:[Android。一起滚动2个列表视图](http://stackoverflow.com/q/12342419/1267661)我想出了一个可以帮助你的解决方案。 (它可以像你想要的那样处理点击,但有时同步会打破......) – Sam 2013-02-27 00:41:06