我想讓兩個並排的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