Android-Google公式ドロップダウンSwipeRefreshLayout(アップロード追加)
7036 ワード
Demo_SwipeRefreshLayout
転載は住所を明記してください.http://blog.csdn.net/skyunicorn/article/details/51802724
ドロップダウン・リフレッシュはシステムのコントロールですが、このコントロール自体にアップロードはありません.アップロードはListViewのAdapterで設定する必要があります.
V 4パッケージのサポートが必要です
compile 'com.android.support:support-v4:23.4.0'
レイアウト
コード設定
上書きonRefresh()メソッド
RecyclerViewのスライドリスニングをメイン関数に追加
アップロード、Adapterでレイアウトを2セット設定、デフォルトのitemレイアウト、ボトムロードの表示レイアウト
効果図
Demoアドレス:http://download.csdn.net/detail/skyunicorn/9565101
転載は住所を明記してください.http://blog.csdn.net/skyunicorn/article/details/51802724
ドロップダウン・リフレッシュはシステムのコントロールですが、このコントロール自体にアップロードはありません.アップロードはListViewのAdapterで設定する必要があります.
V 4パッケージのサポートが必要です
compile 'com.android.support:support-v4:23.4.0'
レイアウト
コード設定
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.srl);
// ,
swipeRefreshLayout.setOnRefreshListener(this);
//
// swipeRefreshLayout.setProgressBackgroundColor(R.color.colorAccent);
// ,
swipeRefreshLayout.setColorSchemeResources(R.color.colorAccent, R.color.colorPrimary, R.color.colorPrimaryDark);
上書きonRefresh()メソッド
//
@Override
public void onRefresh()
{
initBDatas();
//
mSwipeRefreshLayout.setRefreshing(false);
}
RecyclerViewのスライドリスニングをメイン関数に追加
// RecyclerView
private RecyclerView.OnScrollListener mOnScrollListener = new RecyclerView.OnScrollListener()
{
private int lastVisibleItem;
//
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState)
{
super.onScrollStateChanged(recyclerView, newState);
/**
* scrollState , SCROLL_STATE_IDLE、SCROLL_STATE_TOUCH_SCROLL、SCROLL_STATE_FLING
* SCROLL_STATE_IDLE
* SCROLL_STATE_TOUCH_SCROLL
* SCROLL_STATE_FLING ,
*/
if (newState == RecyclerView.SCROLL_STATE_IDLE
&& lastVisibleItem + 1 == mAdapter.getItemCount()
&& mAdapter.isShowFooter())
{
//
initAData();
// LogUtils.d(TAG, "loading more data");
// mNewsPresenter.loadNews(mType, pageIndex + Urls.PAZE_SIZE);
}
}
//
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy)
{
super.onScrolled(recyclerView, dx, dy);
// lastVisibleItem
// findLastVisibleItemPosition() item
lastVisibleItem = mLayoutManager.findLastVisibleItemPosition();
}
};
アップロード、Adapterでレイアウトを2セット設定、デフォルトのitemレイアウト、ボトムロードの表示レイアウト
package com.demo.demo_swiperefreshlayout;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List;
/**
* Created by YangJW on 2016/7/1 09:37.
*/
public class MyAdapter extends RecyclerView.Adapter
{
//
private static final int TYPE_FOOTER = 0;
//
private static final int TYPE_DEFAULT = 1;
//
private List mData;
//
private Context mContext;
// item, true
private boolean mShowFooter = true;
//
public MyAdapter(Context mContext)
{
this.mContext = mContext;
}
//
public void setData(List Data)
{
this.mData = Data;
this.notifyDataSetChanged();
}
// item
@Override
public int getItemViewType(int position)
{
// +1 ( 0 ), ,
if (position + 1 == getItemCount())
{
return TYPE_FOOTER;
} else
{
return TYPE_DEFAULT;
}
}
// ( convertView)
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
if (viewType == TYPE_DEFAULT)
{
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_item, parent, false);
DefaultViewHolder vh = new DefaultViewHolder(v);
return vh;
} else
{
//
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.footer, null);
//
view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
return new FooterViewHolder(view);
}
}
// ( )
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position)
{
//
if (holder instanceof DefaultViewHolder)
{
String str = mData.get(position);
if (str == null)
{
return;
}
((DefaultViewHolder) holder).tv.setText(str);
}
}
//
@Override
public int getItemCount()
{
// , 1, 0
int begin = mShowFooter? 1 : 0;
// , begin
if (mData == null)
{
return begin;
}
// , +1
return mData.size() + begin;
}
// ( )
public void isShowFooter(boolean showFooter)
{
this.mShowFooter = showFooter;
}
// ,
public boolean isShowFooter()
{
return this.mShowFooter;
}
// ViewHolder
public class FooterViewHolder extends RecyclerView.ViewHolder
{
public FooterViewHolder(View view)
{
super(view);
}
}
// ViewHolder
public class DefaultViewHolder extends RecyclerView.ViewHolder
{
public TextView tv;
public DefaultViewHolder(View itemView)
{
super(itemView);
tv = (TextView) itemView.findViewById(R.id.tv);
}
}
}
効果図
Demoアドレス:http://download.csdn.net/detail/skyunicorn/9565101