gpt4 book ai didi

java - 并排同步两个ListViews Android

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:00 25 4
gpt4 key购买 nike

我试图让两个并排的 ListView 在某种程度上像 GridView 一样。我不使用 GridView 的原因是因为不支持交错外观。无论如何,到目前为止我有以下代码:

<- 旧的,现在不相关的代码 ->

编辑:

我按照@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:

还没找到好的解决办法。以下是我发现不太有效的解决方案:

有什么想法吗?谢谢。

最佳答案

好的,所以我最终使用了线性布局方法(参见问题)并使用 setTag 使 onItemClickListener 正常工作,并使用 CustomScrollView 实现使无限列表正常工作。

基本上,两个 linearLayouts 水平堆叠在一个 ScrollView 中。它运行良好,加载速度更快。

此外,加载我的图像 SmartImageView如果有帮助的话。

如果有人想要代码,我也许可以发布其中的一部分。

关于java - 并排同步两个ListViews Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15102034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com