import android.app.Activity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
/**
* Created by guo
*/
public class HorRecyclerActivity extends Activity {
List<String> strings = new ArrayList<String>();
private RecyclerView mRecyclerView;
private RecycleAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recyclerview);
mRecyclerView = (RecyclerView) findViewById(R.id.activity_recycler_view);
final TextView textView = (TextView) findViewById(R.id.activity_recycler_tv);
for (int i = 0; i < 50; i++) {
strings.add(i + "item");
}
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
mRecyclerView.setLayoutManager(linearLayoutManager);
//設置適配器
mAdapter = new RecycleAdapter(this, strings);
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
//暫停的時候才能去定位item
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
mRecyclerView.scrollToPosition(getCurrentPosition());
textView.setText(String.valueOf(getMiddlePosition()));
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
}
});
}
/**
* 獲取中間位置
*
* @return 當前值
*/
private int getMiddlePosition() {
return getCurrentPosition() + (RecycleAdapter.ITEM_COLUMN / 2);
}
/**
* 獲取滑動當前索引, 滑動偏移 / 每個滑動item寬度
*
* @return 當前值
*/
private int getCurrentPosition() {
return (int) ((double) (mRecyclerView.computeHorizontalScrollOffset())
/ (double) mAdapter.getScreenWidth());
}
}
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List;
/**
* Created by guo
*/
public class RecycleAdapter extends RecyclerView.Adapter {
private Context mContext;
private List<String> mStrings;
/**
* 一行顯示幾列
*/
public static final int ITEM_COLUMN = 1;
public RecycleAdapter(Context context, List<String> strings) {
this.mContext = context;
this.mStrings = strings;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.item_cardview, parent, false);
RecyclerView.LayoutParams lp = (RecyclerView.LayoutParams) view.getLayoutParams();
lp.width = getScreenWidth();
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder != null) {
setChildView((ViewHolder) holder, mStrings.get(position));
}
}
private void setChildView(ViewHolder holder, String str) {
holder.card2.setText(str);
}
@Override
public int getItemCount() {
return mStrings == null || mStrings.isEmpty() ? 0 : mStrings.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView card2;
public ViewHolder(View itemView) {
super(itemView);
card2 = (TextView) itemView.findViewById(R.id.item_card_2);
}
}
// 獲取屏幕寬度
public int getScreenWidth() {
DisplayMetrics displayMetrics = mContext.getResources().getDisplayMetrics();
return displayMetrics.widthPixels / ITEM_COLUMN;
}
}
關於RecyclerView還有很多的使用方法,更多的需要你去探究,本文參考下面這個博文寫的 http://www.jianshu.com/p/4a647f6cbe42