如何使用recyclelerview内的偏移滚动到特定位置?

我用过

public LinearLayoutManager linearlayoutmanager;

linearlayoutmanager.scrollToPositionWithOffset(0, scrolled);

我也用过scrollto

mRecyclerView.scrollTo(0, scrolled);

我也使用了smoothScrolltoposition

mRecyclerView.smoothScrollToPosition(scrolled);

但似乎没有人为我工作.

如果有人对此有所了解,请帮助我

UPDATE

功能我在哪里设置我的Recyclerview的适配器

public void Nearby_Search_requestData() {

OkHttpClient client = new OkHttpClient();

client = MySSLTrust.trustcert(getActivity());

RestAdapter adapter = new RestAdapter.Builder().setEndpoint(SEARCH_MERCHANT_ENDPOINT).setClient(new OkClient(client)).build();

final RetrofitInterface api = adapter.create(RetrofitInterface.class);

if (api != null) {

api.post_Nearby_Search(page.toString(), new Callback() {

@Override

public void success(final Nearby_Search_All server_data, Response response) {

if (server_data.getSuccess() == 1) {

if (server_data.getResults().size() == 0) {

if (page != 0) {

mRecyclerView.scrollToPosition(firstVis);

} else {

Log.d("hii", "zero");

// NO_MERCHANT.setVisibility(View.VISIBLE);

mAdapter = new searchrecyclerviewadapter(getActivity(), data, font);

mRecyclerView.setAdapter(mAdapter);

}

} else {

Log.d("scroll", "hii");

// NO_MERCHANT.setVisibility(View.INVISIBLE);

if (server_data.getSize() > server_data.getResults().size()) {

stay_on_this_page = true;

} else {

stay_on_this_page = false;

}

if (page == 0) {

prev_total = 0;

data.clear();

Log.d("hii", "Page is zero " + prev_total);

list_size = server_data.getSize();

} else {

Log.d("hii", "prev_total is " + prev_total + " Size is " + server_data.getSize() + " page is " + page);

prev_total = server_data.getSize() * page;

Log.d("hii", "Now prev_total is " + prev_total);

}

total_curr = server_data.getResults().size();

Log.d("hii", "first place is " + server_data.getResults().get(0).getShop_name());

for (int i = 0; i < total_curr; i++) {

information current = new information();

current.title = server_data.getResults().get(i).getShop_name();

String street = server_data.getResults().get(i).getAddress().getStreet();

String area = server_data.getResults().get(i).getAddress().getArea();

current.Address = street + " " + area;

String[] splited = area.split(",");

current.area1 = splited[1];

current.type = server_data.getResults().get(i).getShop_type();

current.rating = server_data.getResults().get(i).getRating();

current.distance = server_data.getResults().get(i).getDistance();

current.jeb_no = server_data.getResults().get(i).getJeb_no();

current.total_photos = server_data.getResults().get(i).getTotal_photos();

if (current.total_photos == 0) {

} else if (current.total_photos == 1) {

current.photo_1 = server_data.getResults().get(i).getPhotos().getPhoto_1();

} else if (current.total_photos == 2) {

current.photo_1 = server_data.getResults().get(i).getPhotos().getPhoto_1();

current.photo_2 = server_data.getResults().get(i).getPhotos().getPhoto_2();

} else {

current.photo_1 = server_data.getResults().get(i).getPhotos().getPhoto_1();

current.photo_2 = server_data.getResults().get(i).getPhotos().getPhoto_2();

}

data.add(current);

}

if (adapterinitialised) {

mAdapter.notifyDataSetChanged();

} else {

mAdapter = new searchrecyclerviewadapter(getActivity(), data, font);

// mAdapter.setClickListener(Search.class);

mRecyclerView.setAdapter(mAdapter);

adapterinitialised = true;

}

}

// mRecyclerView.scrollToPosition(firstVis);

Log.d("scroll", "hee");

scrolled = scrolled + 10;

Log.d("scroll", "scrolled: " + scrolled);

// ALL BELOW CODE I HAVE TRIED FOR SCROLLING BUT NONE WAS HELPFUL

/* mRecyclerView.post(new Runnable() {

@Override

public void run() {

mRecyclerView.smoothScrollToPosition(scrolled);

// or do mRecyclerView.scrollTo(0, scrolled);

}

});

*/

// l.scrollToPositionWithOffset(0, scrolled);

// mRecyclerView.smoothScrollToPosition(scrolled);

// mRecyclerView.scrollBy(0, scrolled);

// l.scrollToPosition();

// mRecyclerView.scrollToPosition(scrolled);

// mRecyclerView.smoothScrollBy(0, scrolled);

// mRecyclerView.scrollBy(0, 10);

// mRecyclerView.scrollTo(0, 10);

} else {

Log.d("hii", server_data.getMessage());

Toast.makeText(getActivity(), server_data.getMessage(), Toast.LENGTH_SHORT).show();

}

}

@Override

public void failure(RetrofitError retrofitError) {

Log.d("hii", "failure");

Log.e("hii", retrofitError.toString());

Toast.makeText(getActivity(), retrofitError.toString(), Toast.LENGTH_SHORT).show();

}

});

} else {

Log.d("hii", "api null");

}

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐