我正在使用围绕ListView的SwipeRefreshLayout。当ListView为空时,我已设置TextView以显示。这“工作正常”,但当ListView为空并且显示空视图时,SwipeRefreshLayout无法正确显示。如果向下拖动,没有圆圈下降但是当你松开手指时,圆圈在屏幕上闪烁然后消失。事实上,如果您只是在任何地方触摸屏幕,SwipeRefreshLayout将以相同的方式出现。以下是我在XML中定义的方法:
&test_cell
编辑:活动代码
<FrameLayout
android:id="@+id/empty_view_requests"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:layout_below="@+id/appbar"
android:layout_height="match_parent">
<android.support.v4.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/appbar"
android:id="@+id/buddy_requests_swipe_layout">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/buddy_requests_listview"
android:layout_gravity="center_horizontal|top"
/>
</android.support.v4.widget.SwipeRefreshLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp"
android:layout_gravity="center_horizontal|center_vertical"
android:id="@+id/norequests_textview"
android:text="No buddy requests."/>
</FrameLayout>
我该如何解决这个问题?
答案 0 :(得分:1)
我正在粘贴我的工作代码。即使我遇到了问题。希望这对你有用。 最初设置emptyview可见性View.GONE。然后在API调用响应callBacks上设置,如果没有items / statuscode..etc,setvisibility View.VISIBLE并将其设置为emptyviewfor listview。
findViewById(R.id.lvemptyview).setVisibility(View.GONE);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
if (Utils.isInternetConnected(getApplicationContext())) {
CallAPICall(lat, lng);
mSwipeRefreshLayout.setRefreshing(false);
} }});
关于齐射响应回调
mSwipeRefreshLayout.setRefreshing(false);
if (statuscode== 200) {
try {
String content = new String(arg2, "UTF-8");
MemberResp memberResp;
Gson gson = new Gson();
Type type = new TypeToken<MemberResp>() {
}.getType();
memberResp = gson.fromJson(content, type);
if (memberResp.Status == 1) {
if (memberResp.bar_lists.size() > 0) {
findViewById(R.id.lvemptyview).setVisibility(View.GONE);
setadapter();
} else {
Adapter.ClearAll();
findViewById(R.id.lvemptyview).setVisibility(View.VISIBLE);
lvList.setEmptyView(findViewById(R.id.lvemptyview));
}
答案 1 :(得分:1)
尝试将TextView
放入ScrollView
。我发现SwipeRefreshLayout
需要某种可滚动的视图
您的代码将是
<FrameLayout
android:id="@+id/empty_view_requests"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:layout_below="@+id/appbar"
android:layout_height="match_parent">
<android.support.v4.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/appbar"
android:id="@+id/buddy_requests_swipe_layout">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/buddy_requests_listview"
android:layout_gravity="center_horizontal|top"
/>
</android.support.v4.widget.SwipeRefreshLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp"
android:layout_gravity="center_horizontal|center_vertical"
android:id="@+id/norequests_textview"
android:text="No buddy requests."/>
</ScrollView>
</FrameLayout>
应该马上工作
答案 2 :(得分:0)
您已将父框架布局设置为子视图的空视图(listview)。尝试删除该行。
答案 3 :(得分:0)
空布局是文本视图。请参考以下代码。并在SetEmptyListView之后设置适配器。
TextView noRequestsLayout = (TextView)findViewById(R.id.norequests_textview);
ListView requestsListView = (ListView)findViewById(R.id.buddy_requests_listview);
requestListAdapter = new BuddyRequestsActivityListAdapter(this, this);
requestsListView.setEmptyView(noRequestsLayout);
requestsListView.setAdapter(requestListAdapter);