Java源码示例:com.pluscubed.logcat.data.LogLine
示例1
@Override
public boolean onMenuItemClick(MenuItem item, LogLine logLine) {
if (logLine != null) {
switch (item.getItemId()) {
case CONTEXT_MENU_COPY_ID:
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setPrimaryClip(ClipData.newPlainText(null, logLine.getOriginalLine()));
Toast.makeText(this, R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show();
return true;
case CONTEXT_MENU_FILTER_ID:
if (logLine.getProcessId() == -1) {
// invalid line
return false;
}
showSearchByDialog(logLine);
return true;
}
}
return false;
}
示例2
@Override
public void onClick(final View itemView, final LogLine logLine) {
if (partialSelectMode) {
logLine.setHighlighted(true);
partiallySelectedLogLines.add(logLine);
mHandler.post(new Runnable() {
@Override
public void run() {
mLogListAdapter.notifyItemChanged(binding.list.getChildAdapterPosition(itemView));
}
});
if (partiallySelectedLogLines.size() == 2) {
// last line
completePartialSelect();
}
} else {
logLine.setExpanded(!logLine.isExpanded());
mLogListAdapter.notifyItemChanged(binding.list.getChildAdapterPosition(itemView));
}
}
示例3
private void cancelPartialSelect() {
partialSelectMode = false;
boolean changed = false;
for (LogLine logLine : partiallySelectedLogLines) {
if (logLine.isHighlighted()) {
logLine.setHighlighted(false);
changed = true;
}
}
partiallySelectedLogLines.clear();
if (changed) {
mHandler.post(new Runnable() {
@Override
public void run() {
mLogListAdapter.notifyDataSetChanged();
}
});
}
}
示例4
@Override
public boolean onMenuItemClick(MenuItem item, LogLine logLine) {
if (logLine != null) {
switch (item.getItemId()) {
case CONTEXT_MENU_COPY_ID:
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setPrimaryClip(ClipData.newPlainText(null, logLine.getOriginalLine()));
Toast.makeText(this, R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show();
return true;
case CONTEXT_MENU_FILTER_ID:
if (logLine.getProcessId() == -1) {
// invalid line
return false;
}
showSearchByDialog(logLine);
return true;
}
}
return false;
}
示例5
@Override
public void onClick(final View itemView, final LogLine logLine) {
if (partialSelectMode) {
logLine.setHighlighted(true);
partiallySelectedLogLines.add(logLine);
mHandler.post(new Runnable() {
@Override
public void run() {
mLogListAdapter.notifyItemChanged(binding.list.getChildAdapterPosition(itemView));
}
});
if (partiallySelectedLogLines.size() == 2) {
// last line
completePartialSelect();
}
} else {
logLine.setExpanded(!logLine.isExpanded());
mLogListAdapter.notifyItemChanged(binding.list.getChildAdapterPosition(itemView));
}
}
示例6
private void cancelPartialSelect() {
partialSelectMode = false;
boolean changed = false;
for (LogLine logLine : partiallySelectedLogLines) {
if (logLine.isHighlighted()) {
logLine.setHighlighted(false);
changed = true;
}
}
partiallySelectedLogLines.clear();
if (changed) {
mHandler.post(new Runnable() {
@Override
public void run() {
mLogListAdapter.notifyDataSetChanged();
}
});
}
}
示例7
@Override
public boolean onMenuItemClick(MenuItem item, LogLine logLine) {
if (logLine != null) {
switch (item.getItemId()) {
case CONTEXT_MENU_COPY_ID:
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setPrimaryClip(ClipData.newPlainText(null, logLine.getOriginalLine()));
Toast.makeText(this, R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show();
return true;
case CONTEXT_MENU_FILTER_ID:
if (logLine.getProcessId() == -1) {
// invalid line
return false;
}
showSearchByDialog(logLine);
return true;
}
}
return false;
}
示例8
@Override
public void onClick(final View itemView, final LogLine logLine) {
if (partialSelectMode) {
logLine.setHighlighted(true);
partiallySelectedLogLines.add(logLine);
mHandler.post(() -> mLogListAdapter.notifyItemChanged(((RecyclerView) findViewById(R.id.list)).getChildAdapterPosition(itemView)));
if (partiallySelectedLogLines.size() == 2) {
// last line
completePartialSelect();
}
} else {
logLine.setExpanded(!logLine.isExpanded());
mLogListAdapter.notifyItemChanged(((RecyclerView) findViewById(R.id.list)).getChildAdapterPosition(itemView));
}
}
示例9
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_logcat);
LogLine.isScrubberEnabled = PreferenceHelper.isScrubberEnabled(this);
handleShortcuts(getIntent().getStringExtra("shortcut_action"));
mHandler = new Handler(Looper.getMainLooper());
binding.fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogHelper.stopRecordingLog(LogcatActivity.this);
}
});
binding.list.setLayoutManager(new LinearLayoutManager(this));
binding.list.setItemAnimator(null);
setSupportActionBar((Toolbar) findViewById(R.id.toolbar_actionbar));
setTitle(R.string.logcat);
mCollapsedMode = !PreferenceHelper.getExpandedByDefaultPreference(this);
log.d("initial collapsed mode is %s", mCollapsedMode);
mSearchSuggestionsAdapter = new SimpleCursorAdapter(this,
R.layout.list_item_dropdown,
null,
new String[]{"suggestion"},
new int[]{android.R.id.text1},
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
setUpAdapter();
updateBackgroundColor();
runUpdatesIfNecessaryAndShowWelcomeMessage();
}
示例10
private void addToAutocompleteSuggestions(LogLine logLine) {
// add the tags to the autocompletetextview
if (!StringUtil.isEmptyOrWhitespaceOnly(logLine.getTag())) {
String trimmed = logLine.getTag().trim();
addToAutocompleteSuggestions(trimmed);
}
}
示例11
@Override
protected void onProgressUpdate(LogLine... values) {
super.onProgressUpdate(values);
if (!mFirstLineReceived) {
mFirstLineReceived = true;
hideProgressBar();
}
for (LogLine logLine : values) {
mLogListAdapter.addWithFilter(logLine, mSearchingString);
addToAutocompleteSuggestions(logLine);
}
// how many logs to keep in memory? this avoids OutOfMemoryErrors
int maxNumLogLines = PreferenceHelper.getDisplayLimitPreference(LogcatActivity.this);
// check to see if the list needs to be truncated to avoid out of memory errors
if (++counter % UPDATE_CHECK_INTERVAL == 0
&& mLogListAdapter.getTrueValues().size() > maxNumLogLines) {
int numItemsToRemove = mLogListAdapter.getTrueValues().size() - maxNumLogLines;
mLogListAdapter.removeFirst(numItemsToRemove);
log.d("truncating %d lines from log list to avoid out of memory errors", numItemsToRemove);
}
if (mAutoscrollToBottom) {
scrollToBottom();
}
}
示例12
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_logcat);
LogLine.isScrubberEnabled = PreferenceHelper.isScrubberEnabled(this);
handleShortcuts(getIntent().getStringExtra("shortcut_action"));
mHandler = new Handler(Looper.getMainLooper());
binding.fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogHelper.stopRecordingLog(LogcatActivity.this);
}
});
binding.list.setLayoutManager(new LinearLayoutManager(this));
binding.list.setItemAnimator(null);
setSupportActionBar((Toolbar) findViewById(R.id.toolbar_actionbar));
setTitle(R.string.logcat);
mCollapsedMode = !PreferenceHelper.getExpandedByDefaultPreference(this);
log.d("initial collapsed mode is %s", mCollapsedMode);
mSearchSuggestionsAdapter = new SimpleCursorAdapter(this,
R.layout.list_item_dropdown,
null,
new String[]{"suggestion"},
new int[]{android.R.id.text1},
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
setUpAdapter();
updateBackgroundColor();
runUpdatesIfNecessaryAndShowWelcomeMessage();
}
示例13
private void addToAutocompleteSuggestions(LogLine logLine) {
// add the tags to the autocompletetextview
if (!StringUtil.isEmptyOrWhitespaceOnly(logLine.getTag())) {
String trimmed = logLine.getTag().trim();
addToAutocompleteSuggestions(trimmed);
}
}
示例14
@Override
protected void onProgressUpdate(LogLine... values) {
super.onProgressUpdate(values);
if (!mFirstLineReceived) {
mFirstLineReceived = true;
hideProgressBar();
}
for (LogLine logLine : values) {
mLogListAdapter.addWithFilter(logLine, mSearchingString);
addToAutocompleteSuggestions(logLine);
}
// how many logs to keep in memory? this avoids OutOfMemoryErrors
int maxNumLogLines = PreferenceHelper.getDisplayLimitPreference(LogcatActivity.this);
// check to see if the list needs to be truncated to avoid out of memory errors
if (++counter % UPDATE_CHECK_INTERVAL == 0
&& mLogListAdapter.getTrueValues().size() > maxNumLogLines) {
int numItemsToRemove = mLogListAdapter.getTrueValues().size() - maxNumLogLines;
mLogListAdapter.removeFirst(numItemsToRemove);
log.d("truncating %d lines from log list to avoid out of memory errors", numItemsToRemove);
}
if (mAutoscrollToBottom) {
scrollToBottom();
}
}
示例15
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_logcat);
LogLine.isScrubberEnabled = PreferenceHelper.isScrubberEnabled(this);
handleShortcuts(getIntent().getStringExtra("shortcut_action"));
mHandler = new Handler(Looper.getMainLooper());
findViewById(R.id.fab).setOnClickListener(v -> DialogHelper.stopRecordingLog(LogcatActivity.this));
((RecyclerView) findViewById(R.id.list)).setLayoutManager(new LinearLayoutManager(this));
((RecyclerView) findViewById(R.id.list)).setItemAnimator(null);
Toolbar toolbar = findViewById(R.id.toolbar_actionbar);
toolbar.setOverflowIcon(AppCompatResources.getDrawable(this, R.drawable.ic_more_vert_24dp));
setSupportActionBar(toolbar);
mCollapsedMode = !PreferenceHelper.getExpandedByDefaultPreference(this);
mFilterPattern = PreferenceHelper.getFilterPatternPreference(this);
log.d("initial collapsed mode is %s", mCollapsedMode);
mSearchSuggestionsAdapter = new SimpleCursorAdapter(this,
R.layout.list_item_dropdown,
null,
new String[]{"suggestion"},
new int[]{android.R.id.text1},
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
setUpAdapter();
updateBackgroundColor();
runUpdatesIfNecessaryAndShowWelcomeMessage();
}
示例16
private void cancelPartialSelect() {
partialSelectMode = false;
boolean changed = false;
for (LogLine logLine : partiallySelectedLogLines) {
if (logLine.isHighlighted()) {
logLine.setHighlighted(false);
changed = true;
}
}
partiallySelectedLogLines.clear();
if (changed) {
mHandler.post(mLogListAdapter::notifyDataSetChanged);
}
}
示例17
private void addToAutocompleteSuggestions(LogLine logLine) {
// add the tags to the autocompletetextview
if (!StringUtil.isEmptyOrWhitespaceOnly(logLine.getTag())) {
String trimmed = logLine.getTag().trim();
addToAutocompleteSuggestions(trimmed);
}
}
示例18
@Override
protected void onProgressUpdate(LogLine... values) {
super.onProgressUpdate(values);
if (!mFirstLineReceived) {
mFirstLineReceived = true;
hideProgressBar();
}
for (LogLine logLine : values) {
mLogListAdapter.addWithFilter(logLine, mSearchingString, false);
addToAutocompleteSuggestions(logLine);
}
mLogListAdapter.notifyDataSetChanged();
// how many logs to keep in memory? this avoids OutOfMemoryErrors
int maxNumLogLines = PreferenceHelper.getDisplayLimitPreference(LogcatActivity.this);
// check to see if the list needs to be truncated to avoid out of memory errors
if (++counter % UPDATE_CHECK_INTERVAL == 0
&& mLogListAdapter.getTrueValues().size() > maxNumLogLines) {
int numItemsToRemove = mLogListAdapter.getTrueValues().size() - maxNumLogLines;
mLogListAdapter.removeFirst(numItemsToRemove);
log.d("truncating %d lines from log list to avoid out of memory errors", numItemsToRemove);
}
if (mAutoscrollToBottom) {
scrollToBottom();
}
}
示例19
private boolean checkLogLine(String line, SearchCriteria searchCriteria, int logLevelLimit) {
LogLine logLine = LogLine.newLogLine(line, false);
return searchCriteria.matches(logLine)
&& LogLineAdapterUtil.logLevelIsAcceptableGivenLogLevelLimit(logLine.getLogLevel(), logLevelLimit);
}
示例20
private void savePartialLog(final String filename, LogLine first, LogLine last) {
final List<CharSequence> logLines = new ArrayList<>(mLogListAdapter.getItemCount());
// filter based on first and last
boolean started = false;
boolean foundLast = false;
for (int i = 0; i < mLogListAdapter.getItemCount(); i++) {
LogLine logLine = mLogListAdapter.getItem(i);
if (logLine == first) {
started = true;
}
if (started) {
logLines.add(logLine.getOriginalLine());
}
if (logLine == last) {
foundLast = true;
break;
}
}
if (!foundLast || logLines.isEmpty()) {
Toast.makeText(this, R.string.toast_invalid_selection, Toast.LENGTH_LONG).show();
cancelPartialSelect();
return;
}
new Thread(new Runnable() {
@Override
public void run() {
SaveLogHelper.deleteLogIfExists(filename);
final boolean saved = SaveLogHelper.saveLog(logLines, filename);
mHandler.post(new Runnable() {
@Override
public void run() {
if (saved) {
Toast.makeText(getApplicationContext(), R.string.log_saved, Toast.LENGTH_SHORT).show();
openLogFile(filename);
} else {
Toast.makeText(getApplicationContext(), R.string.unable_to_save_log, Toast.LENGTH_LONG).show();
}
cancelPartialSelect();
}
});
}
}).start();
}
示例21
private void setUpPreferences() {
displayLimitPreference = (EditTextPreference) findPreference(getString(R.string.pref_display_limit));
int displayLimitValue = PreferenceHelper.getDisplayLimitPreference(getActivity());
displayLimitPreference.setSummary(getString(R.string.pref_display_limit_summary,
displayLimitValue, getString(R.string.pref_display_limit_default)));
displayLimitPreference.setOnPreferenceChangeListener(this);
logLinePeriodPreference = (EditTextPreference) findPreference(getString(R.string.pref_log_line_period));
int logLinePrefValue = PreferenceHelper.getLogLinePeriodPreference(getActivity());
logLinePeriodPreference.setSummary(getString(R.string.pref_log_line_period_summary,
logLinePrefValue, getString(R.string.pref_log_line_period_default)));
logLinePeriodPreference.setOnPreferenceChangeListener(this);
textSizePreference = (ListPreference) findPreference(getString(R.string.pref_text_size));
textSizePreference.setSummary(textSizePreference.getEntry());
textSizePreference.setOnPreferenceChangeListener(this);
defaultLevelPreference = (ListPreference) findPreference(getString(R.string.pref_default_log_level));
defaultLevelPreference.setOnPreferenceChangeListener(this);
setDefaultLevelPreferenceSummary(defaultLevelPreference.getEntry());
bufferPreference = (MultipleChoicePreference) findPreference(getString(R.string.pref_buffer));
bufferPreference.setOnPreferenceChangeListener(this);
setBufferPreferenceSummary(bufferPreference.getValue());
scrubberPreference = (SwitchPreference) getPreferenceScreen().findPreference("scrubber");
scrubberPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
LogLine.isScrubberEnabled = (boolean) newValue;
return true;
}
});
}
示例22
private boolean checkLogLine(String line, SearchCriteria searchCriteria, int logLevelLimit) {
LogLine logLine = LogLine.newLogLine(line, false);
return searchCriteria.matches(logLine)
&& LogLineAdapterUtil.logLevelIsAcceptableGivenLogLevelLimit(logLine.getLogLevel(), logLevelLimit);
}
示例23
private void savePartialLog(final String filename, LogLine first, LogLine last) {
final List<CharSequence> logLines = new ArrayList<>(mLogListAdapter.getItemCount());
// filter based on first and last
boolean started = false;
boolean foundLast = false;
for (int i = 0; i < mLogListAdapter.getItemCount(); i++) {
LogLine logLine = mLogListAdapter.getItem(i);
if (logLine == first) {
started = true;
}
if (started) {
logLines.add(logLine.getOriginalLine());
}
if (logLine == last) {
foundLast = true;
break;
}
}
if (!foundLast || logLines.isEmpty()) {
Toast.makeText(this, R.string.toast_invalid_selection, Toast.LENGTH_LONG).show();
cancelPartialSelect();
return;
}
new Thread(new Runnable() {
@Override
public void run() {
SaveLogHelper.deleteLogIfExists(filename);
final boolean saved = SaveLogHelper.saveLog(logLines, filename);
mHandler.post(new Runnable() {
@Override
public void run() {
if (saved) {
Toast.makeText(getApplicationContext(), R.string.log_saved, Toast.LENGTH_SHORT).show();
openLogFile(filename);
} else {
Toast.makeText(getApplicationContext(), R.string.unable_to_save_log, Toast.LENGTH_LONG).show();
}
cancelPartialSelect();
}
});
}
}).start();
}
示例24
private void setUpPreferences() {
displayLimitPreference = (EditTextPreference) findPreference(getString(R.string.pref_display_limit));
int displayLimitValue = PreferenceHelper.getDisplayLimitPreference(getActivity());
displayLimitPreference.setSummary(getString(R.string.pref_display_limit_summary,
displayLimitValue, getString(R.string.pref_display_limit_default)));
displayLimitPreference.setOnPreferenceChangeListener(this);
logLinePeriodPreference = (EditTextPreference) findPreference(getString(R.string.pref_log_line_period));
int logLinePrefValue = PreferenceHelper.getLogLinePeriodPreference(getActivity());
logLinePeriodPreference.setSummary(getString(R.string.pref_log_line_period_summary,
logLinePrefValue, getString(R.string.pref_log_line_period_default)));
logLinePeriodPreference.setOnPreferenceChangeListener(this);
textSizePreference = (ListPreference) findPreference(getString(R.string.pref_text_size));
textSizePreference.setSummary(textSizePreference.getEntry());
textSizePreference.setOnPreferenceChangeListener(this);
defaultLevelPreference = (ListPreference) findPreference(getString(R.string.pref_default_log_level));
defaultLevelPreference.setOnPreferenceChangeListener(this);
setDefaultLevelPreferenceSummary(defaultLevelPreference.getEntry());
bufferPreference = (MultipleChoicePreference) findPreference(getString(R.string.pref_buffer));
bufferPreference.setOnPreferenceChangeListener(this);
setBufferPreferenceSummary(bufferPreference.getValue());
scrubberPreference = (SwitchPreference) getPreferenceScreen().findPreference("scrubber");
scrubberPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
LogLine.isScrubberEnabled = (boolean) newValue;
return true;
}
});
}
示例25
private boolean checkLogLine(String line, SearchCriteria searchCriteria, int logLevelLimit, String filterPattern) {
LogLine logLine = LogLine.newLogLine(line, false, filterPattern);
return searchCriteria.matches(logLine)
&& LogLineAdapterUtil.logLevelIsAcceptableGivenLogLevelLimit(logLine.getLogLevel(), logLevelLimit);
}
示例26
private void savePartialLog(final String filename, LogLine first, LogLine last) {
final List<CharSequence> logLines = new ArrayList<>(mLogListAdapter.getItemCount());
// filter based on first and last
boolean started = false;
boolean foundLast = false;
for (int i = 0; i < mLogListAdapter.getItemCount(); i++) {
LogLine logLine = mLogListAdapter.getItem(i);
if (logLine == first) {
started = true;
}
if (started) {
logLines.add(logLine.getOriginalLine());
}
if (logLine == last) {
foundLast = true;
break;
}
}
if (!foundLast || logLines.isEmpty()) {
Toast.makeText(this, R.string.toast_invalid_selection, Toast.LENGTH_LONG).show();
cancelPartialSelect();
return;
}
new Thread(() -> {
SaveLogHelper.deleteLogIfExists(filename);
final boolean saved = SaveLogHelper.saveLog(logLines, filename);
mHandler.post(() -> {
if (saved) {
Toast.makeText(getApplicationContext(), R.string.log_saved, Toast.LENGTH_SHORT).show();
openLogFile(filename);
} else {
Toast.makeText(getApplicationContext(), R.string.unable_to_save_log, Toast.LENGTH_LONG).show();
}
cancelPartialSelect();
});
}).start();
}
示例27
private void setUpPreferences() {
setCurrentValue("ui.theme");
setCurrentValue("theme");
displayLimitPreference = (EditTextPreference) findPreference(getString(R.string.pref_display_limit));
int displayLimitValue = PreferenceHelper.getDisplayLimitPreference(getActivity());
displayLimitPreference.setSummary(getString(R.string.pref_display_limit_summary,
displayLimitValue, getString(R.string.pref_display_limit_default)));
displayLimitPreference.setOnPreferenceChangeListener(this);
filterPatternPreference = (EditTextPreference) findPreference(getString(R.string.pref_filter_pattern));
filterPatternPreference.setSummary(getString(R.string.pref_filter_pattern_summary));
filterPatternPreference.setOnPreferenceChangeListener(this);
logLinePeriodPreference = (EditTextPreference) findPreference(getString(R.string.pref_log_line_period));
int logLinePrefValue = PreferenceHelper.getLogLinePeriodPreference(getActivity());
logLinePeriodPreference.setSummary(getString(R.string.pref_log_line_period_summary,
logLinePrefValue, getString(R.string.pref_log_line_period_default)));
logLinePeriodPreference.setOnPreferenceChangeListener(this);
textSizePreference = (ListPreference) findPreference(getString(R.string.pref_text_size));
textSizePreference.setSummary(textSizePreference.getEntry());
textSizePreference.setOnPreferenceChangeListener(this);
defaultLevelPreference = (ListPreference) findPreference(getString(R.string.pref_default_log_level));
defaultLevelPreference.setOnPreferenceChangeListener(this);
setDefaultLevelPreferenceSummary(defaultLevelPreference.getEntry());
mThemePreference = findPreference("ui.theme");
mThemePreference.setOnPreferenceChangeListener(this);
bufferPreference = (MultipleChoicePreference) findPreference(getString(R.string.pref_buffer));
bufferPreference.setOnPreferenceChangeListener(this);
setBufferPreferenceSummary(bufferPreference.getValue());
mThemePreference.setOnPreferenceChangeListener(this);
mAboutPreference = findPreference(getString(R.string.pref_about));
mAboutPreference.setOnPreferenceClickListener(preference -> {
// launch about activity
Intent intent = new Intent(getActivity(), AboutDialogActivity.class);
startActivity(intent);
return true;
});
mAboutPreference.setSummary(getString(R.string.version, PackageHelper.getVersionName(getActivity())));
scrubberPreference = (SwitchPreference) getPreferenceScreen().findPreference("scrubber");
scrubberPreference.setOnPreferenceChangeListener((preference, newValue) -> {
LogLine.isScrubberEnabled = (boolean) newValue;
return true;
});
}
示例28
private void expandOrCollapseAll(boolean change) {
mCollapsedMode = change != mCollapsedMode;
int oldFirstVisibleItem = ((LinearLayoutManager) binding.list.getLayoutManager()).findFirstVisibleItemPosition();
for (LogLine logLine : mLogListAdapter.getTrueValues()) {
if (logLine != null) {
logLine.setExpanded(!mCollapsedMode);
}
}
mLogListAdapter.notifyDataSetChanged();
// ensure that we either stay autoscrolling at the bottom of the list...
if (mAutoscrollToBottom) {
scrollToBottom();
// ... or that whatever was the previous first visible item is still the current first
// visible item after expanding/collapsing
} else if (oldFirstVisibleItem != -1) {
binding.list.scrollToPosition(oldFirstVisibleItem);
}
supportInvalidateOptionsMenu();
}
示例29
private void expandOrCollapseAll(boolean change) {
mCollapsedMode = change != mCollapsedMode;
int oldFirstVisibleItem = ((LinearLayoutManager) binding.list.getLayoutManager()).findFirstVisibleItemPosition();
for (LogLine logLine : mLogListAdapter.getTrueValues()) {
if (logLine != null) {
logLine.setExpanded(!mCollapsedMode);
}
}
mLogListAdapter.notifyDataSetChanged();
// ensure that we either stay autoscrolling at the bottom of the list...
if (mAutoscrollToBottom) {
scrollToBottom();
// ... or that whatever was the previous first visible item is still the current first
// visible item after expanding/collapsing
} else if (oldFirstVisibleItem != -1) {
binding.list.scrollToPosition(oldFirstVisibleItem);
}
supportInvalidateOptionsMenu();
}
示例30
private void expandOrCollapseAll(boolean change) {
mCollapsedMode = change != mCollapsedMode;
int oldFirstVisibleItem = ((LinearLayoutManager) ((RecyclerView) findViewById(R.id.list)).getLayoutManager()).findFirstVisibleItemPosition();
for (LogLine logLine : mLogListAdapter.getTrueValues()) {
if (logLine != null) {
logLine.setExpanded(!mCollapsedMode);
}
}
mLogListAdapter.notifyDataSetChanged();
// ensure that we either stay autoscrolling at the bottom of the list...
if (mAutoscrollToBottom) {
scrollToBottom();
// ... or that whatever was the previous first visible item is still the current first
// visible item after expanding/collapsing
} else if (oldFirstVisibleItem != -1) {
((RecyclerView) findViewById(R.id.list)).scrollToPosition(oldFirstVisibleItem);
}
supportInvalidateOptionsMenu();
}