が動作していないscrollToPositionとRecyclerViewでスクロール位置を保持します
"lastFirstVisiblePosition"は、onResumeメソッドをデバッグしているときに有効な整数ですが、画面はまだRecyclerViewの最初の要素までスクロールしています。
ご迷惑をおかけして申し訳ございませんが、よろしくお願いいたします。
EDIT:断片相続人
/Iはviewpagerを使用していると私は、複数のリサイクルの景色を眺めることができ、私のフラグメント:
public class CultureFragment extends Fragment implements LoaderManager.LoaderCallbacks<List<News>>, RecyclerViewAdapter.OnItemClicked {
private String baseUrlString = "https://content.guardianapis.com/search?show-fields=headline,thumbnail,wordcount,trailText";
private String LOG_TAG = CultureFragment.class.getName();
public LoaderManager loaderManager;
private RecyclerView recyclerView;
private RecyclerViewAdapter recyclerViewAdapter;
private TextView mEmptyStateTextView;
private View LoadingIndicator;
private RecyclerView.LayoutManager layoutManager;
private int lastFirstVisiblePosition;
View rootView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
setRetainInstance(true);
//initialise rootview
rootView = inflater.inflate(R.layout.word_recycler_view, container, false);
//set up empty text view
mEmptyStateTextView = rootView.findViewById(R.id.empty_view);
mEmptyStateTextView.setVisibility(View.GONE);
//Set up loading indicator
LoadingIndicator = rootView.findViewById(R.id.loading_indicator);
// initialising the recycler view and setting the adapter for adding items.
recyclerView = rootView.findViewById(R.id.recycler_view);
recyclerView.setAdapter(recyclerViewAdapter);
//set the layout manager for item positioning in the list
layoutManager = new LinearLayoutManager(getContext());
recyclerView.setLayoutManager(layoutManager);
//Setting up loadermanager if there is connection
if (NewsActivity.isConnected) {
loaderManager = getLoaderManager();
loaderManager.initLoader(1, null, this);
} else {
recyclerView.setVisibility(View.GONE);
LoadingIndicator.setVisibility(View.GONE);
mEmptyStateTextView.setVisibility(View.VISIBLE);
mEmptyStateTextView.setText(R.string.no_connection);
}
return rootView;
}
@Override
public Loader<List<News>> onCreateLoader(int id, Bundle args) {
Uri baseUri = Uri.parse(baseUrlString);
Uri.Builder uriBuilder = baseUri.buildUpon();
//Create the URL
uriBuilder.appendQueryParameter("section", "culture");
uriBuilder.appendQueryParameter("page-size", "20");
uriBuilder.appendQueryParameter("api-key", "test");
uriBuilder.appendQueryParameter("format", "json");
uriBuilder.appendQueryParameter("orderBy", "newest");
Log.e(LOG_TAG, " the url " + uriBuilder.toString());
return new NewsLoader(getContext(), uriBuilder.toString());
}
@Override
public void onLoadFinished(android.support.v4.content.Loader<List<News>> loader, List<News> data) {
//populate the recyclerview
//dismiss the loading indicator
LoadingIndicator.setVisibility(View.GONE);
if (data != null) {
recyclerViewAdapter = new RecyclerViewAdapter(getContext(), data);
recyclerView.setAdapter(recyclerViewAdapter);
//set the on click listener if the adapter is not NULL (here)
recyclerViewAdapter.setOnClick(this);
} else {
// Remove recycler view, and set the no text textview
recyclerView.setVisibility(View.GONE);
mEmptyStateTextView.setVisibility(View.VISIBLE);
mEmptyStateTextView.setText(R.string.no_stories);
}
}
@Override
public void onLoaderReset(android.support.v4.content.Loader<List<News>> loader) {
}
/*Custom on item click method, implemented in the recycler view Adapter*/
@Override
public void onItemClick(int position) {
News news = recyclerViewAdapter.getItem(position);
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(news.getmWebUrl()));
startActivity(i);
}
@Override
public void onPause() {
super.onPause();
lastFirstVisiblePosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
}
@Override
public void onResume() {
super.onResume();
if (lastFirstVisiblePosition > 0) {
((LinearLayoutManager) recyclerView.getLayoutManager()).scrollToPosition(lastFirstVisiblePosition);
}
}
}
何が起こるか、リサイクルビューは何らかの理由で全部スクロールしています。 – tipi