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.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
@ -16,11 +17,13 @@ import androidx.recyclerview.widget.DividerItemDecoration;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
|
import com.radio.codec2talkie.MainActivity;
|
||||||
import com.radio.codec2talkie.R;
|
import com.radio.codec2talkie.R;
|
||||||
import com.radio.codec2talkie.storage.log.group.LogItemGroupAdapter;
|
import com.radio.codec2talkie.storage.log.group.LogItemGroupAdapter;
|
||||||
import com.radio.codec2talkie.storage.position.PositionItemViewModel;
|
import com.radio.codec2talkie.storage.position.PositionItemViewModel;
|
||||||
|
|
||||||
public class LogItemActivity extends AppCompatActivity {
|
public class LogItemActivity extends AppCompatActivity {
|
||||||
|
private static final String TAG = LogItemActivity.class.getSimpleName();
|
||||||
|
|
||||||
private String _groupName;
|
private String _groupName;
|
||||||
private LogItemViewModel _logItemViewModel;
|
private LogItemViewModel _logItemViewModel;
|
||||||
|
@ -52,6 +55,7 @@ public class LogItemActivity extends AppCompatActivity {
|
||||||
final LogItemAdapter adapter = new LogItemAdapter(new LogItemAdapter.LogItemDiff(), _groupName == null);
|
final LogItemAdapter adapter = new LogItemAdapter(new LogItemAdapter.LogItemDiff(), _groupName == null);
|
||||||
logItemRecyclerView.setAdapter(adapter);
|
logItemRecyclerView.setAdapter(adapter);
|
||||||
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
|
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
|
||||||
|
linearLayoutManager.setReverseLayout(true);
|
||||||
logItemRecyclerView.setLayoutManager(linearLayoutManager);
|
logItemRecyclerView.setLayoutManager(linearLayoutManager);
|
||||||
logItemRecyclerView.addItemDecoration(new DividerItemDecoration(logItemRecyclerView.getContext(), DividerItemDecoration.VERTICAL));
|
logItemRecyclerView.addItemDecoration(new DividerItemDecoration(logItemRecyclerView.getContext(), DividerItemDecoration.VERTICAL));
|
||||||
|
|
||||||
|
@ -85,6 +89,19 @@ public class LogItemActivity extends AppCompatActivity {
|
||||||
_logItemViewModel.getData(_groupName).observe(this, adapter::submitList);
|
_logItemViewModel.getData(_groupName).observe(this, adapter::submitList);
|
||||||
setTitle(_groupName);
|
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
|
@Override
|
||||||
|
|
|
@ -31,12 +31,12 @@ public class LogItemAdapter extends ListAdapter<LogItem, LogItemHolder> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean areItemsTheSame(@NonNull LogItem oldItem, @NonNull LogItem newItem) {
|
public boolean areItemsTheSame(@NonNull LogItem oldItem, @NonNull LogItem newItem) {
|
||||||
return oldItem == newItem;
|
return oldItem.getTimestampEpoch() == newItem.getTimestampEpoch();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean areContentsTheSame(@NonNull LogItem oldItem, @NonNull LogItem newItem) {
|
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")
|
"GROUP BY log.srcCallsign")
|
||||||
LiveData<List<LogItemGroup>> getGroups();
|
LiveData<List<LogItemGroup>> getGroups();
|
||||||
|
|
||||||
@Query("SELECT * FROM LogItem ORDER by timestampEpoch DESC")
|
@Query("SELECT * FROM LogItem ORDER by timestampEpoch ASC")
|
||||||
LiveData<List<LogItem>> getAllLogItems();
|
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);
|
LiveData<List<LogItem>> getLogItems(String srcCallsign);
|
||||||
|
|
||||||
@Query("DELETE FROM LogItem WHERE srcCallsign = :srcCallsign")
|
@Query("DELETE FROM LogItem WHERE srcCallsign = :srcCallsign")
|
||||||
|
|
|
@ -36,7 +36,7 @@ public class LogItemGroupAdapter extends ListAdapter<LogItemGroup, LogItemGroupH
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean areItemsTheSame(@NonNull LogItemGroup oldItem, @NonNull LogItemGroup newItem) {
|
public boolean areItemsTheSame(@NonNull LogItemGroup oldItem, @NonNull LogItemGroup newItem) {
|
||||||
return oldItem == newItem;
|
return oldItem.getSrcCallsign().equals(newItem.getSrcCallsign());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Ładowanie…
Reference in New Issue