kopia lustrzana https://github.com/sh123/codec2_talkie
Log view improvements
rodzic
5511c9fbda
commit
319f39aea5
|
@ -3,6 +3,7 @@ package com.radio.codec2talkie.storage.log;
|
|||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
@ -16,11 +17,13 @@ import androidx.recyclerview.widget.DividerItemDecoration;
|
|||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.radio.codec2talkie.MainActivity;
|
||||
import com.radio.codec2talkie.R;
|
||||
import com.radio.codec2talkie.storage.log.group.LogItemGroupAdapter;
|
||||
import com.radio.codec2talkie.storage.position.PositionItemViewModel;
|
||||
|
||||
public class LogItemActivity extends AppCompatActivity {
|
||||
private static final String TAG = LogItemActivity.class.getSimpleName();
|
||||
|
||||
private String _groupName;
|
||||
private LogItemViewModel _logItemViewModel;
|
||||
|
@ -52,6 +55,7 @@ public class LogItemActivity extends AppCompatActivity {
|
|||
final LogItemAdapter adapter = new LogItemAdapter(new LogItemAdapter.LogItemDiff(), _groupName == null);
|
||||
logItemRecyclerView.setAdapter(adapter);
|
||||
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
|
||||
linearLayoutManager.setReverseLayout(true);
|
||||
logItemRecyclerView.setLayoutManager(linearLayoutManager);
|
||||
logItemRecyclerView.addItemDecoration(new DividerItemDecoration(logItemRecyclerView.getContext(), DividerItemDecoration.VERTICAL));
|
||||
|
||||
|
@ -85,6 +89,19 @@ public class LogItemActivity extends AppCompatActivity {
|
|||
_logItemViewModel.getData(_groupName).observe(this, adapter::submitList);
|
||||
setTitle(_groupName);
|
||||
}
|
||||
|
||||
// register live scroll
|
||||
adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
|
||||
@Override
|
||||
public void onItemRangeInserted(int positionStart, int itemCount) {
|
||||
int msgCount = adapter.getItemCount();
|
||||
int lastVisiblePosition = linearLayoutManager.findLastCompletelyVisibleItemPosition();
|
||||
Log.i(TAG, "" + msgCount + " " + lastVisiblePosition + " " + positionStart);
|
||||
if (lastVisiblePosition == RecyclerView.NO_POSITION || positionStart == msgCount - 1 && lastVisiblePosition == positionStart - 1) {
|
||||
logItemRecyclerView.scrollToPosition(positionStart);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -31,12 +31,12 @@ public class LogItemAdapter extends ListAdapter<LogItem, LogItemHolder> {
|
|||
|
||||
@Override
|
||||
public boolean areItemsTheSame(@NonNull LogItem oldItem, @NonNull LogItem newItem) {
|
||||
return oldItem == newItem;
|
||||
return oldItem.getTimestampEpoch() == newItem.getTimestampEpoch();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean areContentsTheSame(@NonNull LogItem oldItem, @NonNull LogItem newItem) {
|
||||
return oldItem.getLogLine().equals(newItem.getLogLine());
|
||||
return oldItem.getTimestampEpoch() == newItem.getTimestampEpoch();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,10 +35,10 @@ public interface LogItemDao {
|
|||
"GROUP BY log.srcCallsign")
|
||||
LiveData<List<LogItemGroup>> getGroups();
|
||||
|
||||
@Query("SELECT * FROM LogItem ORDER by timestampEpoch DESC")
|
||||
@Query("SELECT * FROM LogItem ORDER by timestampEpoch ASC")
|
||||
LiveData<List<LogItem>> getAllLogItems();
|
||||
|
||||
@Query("SELECT * FROM LogItem WHERE srcCallsign = :srcCallsign ORDER BY timestampEpoch DESC")
|
||||
@Query("SELECT * FROM LogItem WHERE srcCallsign = :srcCallsign ORDER BY timestampEpoch ASC")
|
||||
LiveData<List<LogItem>> getLogItems(String srcCallsign);
|
||||
|
||||
@Query("DELETE FROM LogItem WHERE srcCallsign = :srcCallsign")
|
||||
|
|
|
@ -36,7 +36,7 @@ public class LogItemGroupAdapter extends ListAdapter<LogItemGroup, LogItemGroupH
|
|||
|
||||
@Override
|
||||
public boolean areItemsTheSame(@NonNull LogItemGroup oldItem, @NonNull LogItemGroup newItem) {
|
||||
return oldItem == newItem;
|
||||
return oldItem.getSrcCallsign().equals(newItem.getSrcCallsign());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Ładowanie…
Reference in New Issue