kopia lustrzana https://github.com/sh123/codec2_talkie
Improve hub
rodzic
e2fccd300e
commit
f9ec484593
|
@ -33,6 +33,14 @@ public class LogItemActivity extends AppCompatActivity {
|
|||
ActionBar actionBar = getSupportActionBar();
|
||||
if (actionBar != null) actionBar.setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
// get group name to decide if filtering should be enabled
|
||||
Bundle bundle = getIntent().getExtras();
|
||||
_groupName = null;
|
||||
if (bundle != null) {
|
||||
_groupName = (String)bundle.get("groupName");
|
||||
}
|
||||
|
||||
// view models
|
||||
_logItemViewModel = new ViewModelProvider(this).get(LogItemViewModel.class);
|
||||
_positionItemViewModel = new ViewModelProvider(this).get(PositionItemViewModel.class);
|
||||
|
||||
|
@ -40,16 +48,8 @@ public class LogItemActivity extends AppCompatActivity {
|
|||
RecyclerView logItemRecyclerView = findViewById(R.id.log_item_recyclerview);
|
||||
logItemRecyclerView.setHasFixedSize(true);
|
||||
|
||||
final LogItemAdapter adapter = new LogItemAdapter(new LogItemAdapter.LogItemDiff());
|
||||
adapter.setClickListener(v -> {
|
||||
if (_groupName == null) {
|
||||
TextView itemView = v.findViewById(R.id.log_view_item_title);
|
||||
_groupName = itemView.getText().toString();
|
||||
Intent logItemIntent = new Intent(v.getContext(), LogItemActivity.class);
|
||||
logItemIntent.putExtra("groupName", _groupName);
|
||||
v.getContext().startActivity(logItemIntent);
|
||||
}
|
||||
});
|
||||
// log lines list adapter
|
||||
final LogItemAdapter adapter = new LogItemAdapter(new LogItemAdapter.LogItemDiff(), _groupName == null);
|
||||
logItemRecyclerView.setAdapter(adapter);
|
||||
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
|
||||
logItemRecyclerView.setLayoutManager(linearLayoutManager);
|
||||
|
@ -59,6 +59,7 @@ public class LogItemActivity extends AppCompatActivity {
|
|||
RecyclerView logItemGroupRecyclerView = findViewById(R.id.log_item_group_recyclerview);
|
||||
logItemGroupRecyclerView.setHasFixedSize(true);
|
||||
|
||||
// groups adapter
|
||||
final LogItemGroupAdapter adapterGroup = new LogItemGroupAdapter(new LogItemGroupAdapter.LogItemGroupDiff());
|
||||
adapterGroup.setClickListener(v -> {
|
||||
TextView itemView = v.findViewById(R.id.log_view_group_item_title);
|
||||
|
@ -74,11 +75,6 @@ public class LogItemActivity extends AppCompatActivity {
|
|||
_logItemViewModel.getGroups().observe(this, adapterGroup::submitList);
|
||||
|
||||
// launch with filter if group name is provided
|
||||
Bundle bundle = getIntent().getExtras();
|
||||
_groupName = null;
|
||||
if (bundle != null) {
|
||||
_groupName = (String)bundle.get("groupName");
|
||||
}
|
||||
if (_groupName == null) {
|
||||
logItemGroupRecyclerView.setVisibility(View.GONE);
|
||||
findViewById(R.id.log_item_textview).setVisibility(View.GONE);
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.radio.codec2talkie.storage.log;
|
||||
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
@ -9,26 +8,22 @@ import androidx.recyclerview.widget.ListAdapter;
|
|||
|
||||
public class LogItemAdapter extends ListAdapter<LogItem, LogItemHolder> {
|
||||
|
||||
private View.OnClickListener _clickListener;
|
||||
private final boolean _isClickable;
|
||||
|
||||
public LogItemAdapter(@NonNull DiffUtil.ItemCallback<LogItem> diffCallback) {
|
||||
public LogItemAdapter(@NonNull DiffUtil.ItemCallback<LogItem> diffCallback, boolean isClickable) {
|
||||
super(diffCallback);
|
||||
}
|
||||
|
||||
public void setClickListener(View.OnClickListener clickListener) {
|
||||
_clickListener = clickListener;
|
||||
_isClickable = isClickable;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public LogItemHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
return LogItemHolder.create(parent);
|
||||
return LogItemHolder.create(parent, _isClickable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(LogItemHolder holder, int position) {
|
||||
LogItem current = getItem(position);
|
||||
holder.itemView.setOnClickListener(_clickListener);
|
||||
holder.bind(current.getTimestampEpoch(), current.getSrcCallsign(), current.getLogLine(), current.getIsTransmit());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.radio.codec2talkie.storage.log;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -11,18 +12,23 @@ import com.radio.codec2talkie.R;
|
|||
import com.radio.codec2talkie.tools.DateTools;
|
||||
import com.radio.codec2talkie.tools.TextTools;
|
||||
|
||||
public class LogItemHolder extends RecyclerView.ViewHolder {
|
||||
public class LogItemHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
|
||||
|
||||
private final TextView _logItemViewTitle;
|
||||
private final TextView _logItemViewMessage;
|
||||
private String _srcCallsign;
|
||||
private final boolean _isClickable;
|
||||
|
||||
private LogItemHolder(View itemView) {
|
||||
private LogItemHolder(View itemView, boolean isClickable) {
|
||||
super(itemView);
|
||||
_logItemViewTitle = itemView.findViewById(R.id.log_view_item_title);
|
||||
_logItemViewMessage = itemView.findViewById(R.id.log_view_item_message);
|
||||
_isClickable = isClickable;
|
||||
itemView.setOnClickListener(this);
|
||||
}
|
||||
|
||||
public void bind(long timestamp, String srcCallsign, String text, boolean isTransmitting) {
|
||||
_srcCallsign = srcCallsign;
|
||||
_logItemViewTitle.setText(String.format("%s %s %s",
|
||||
DateTools.epochToIso8601(timestamp),
|
||||
isTransmitting ? "→" : "←",
|
||||
|
@ -30,9 +36,17 @@ public class LogItemHolder extends RecyclerView.ViewHolder {
|
|||
_logItemViewMessage.setText(TextTools.addZeroWidthSpaces(text));
|
||||
}
|
||||
|
||||
static LogItemHolder create(ViewGroup parent) {
|
||||
static LogItemHolder create(ViewGroup parent, boolean isClickable) {
|
||||
View view = LayoutInflater.from(parent.getContext()).inflate(
|
||||
R.layout.activity_log_view_item, parent, false);
|
||||
return new LogItemHolder(view);
|
||||
return new LogItemHolder(view, isClickable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (!_isClickable) return;
|
||||
Intent logItemIntent = new Intent(v.getContext(), LogItemActivity.class);
|
||||
logItemIntent.putExtra("groupName", _srcCallsign);
|
||||
v.getContext().startActivity(logItemIntent);
|
||||
}
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue