Мой английский не самый лучший, но я надеюсь, вы понимаете, я новичок в разработке приложений для Android, и на данный момент у меня есть представление о переработчике, которое заполнено WebService
, я пытаюсь сделать эти предметы могут быть выбраны, на данный момент я пробовал:
С flexibleAdapter
у меня есть Предмет и Фрагмент, но он не работает вообще. со вторым, я пробовал с другим фрагментом, и он может прослушивать щелчки, но есть слушатель, который используется для запуска режима выбора, и этот режим выбора управляется в активном режиме, и этот режим действия не работает Су, не знаю, что делать сейчас
Это мой код с "FlexibleAdapter".
Мой объект "Предмет"
public class TrazaFlex extends AbstractFlexibleItem<TrazaFlex.ViewHolderTrazaFlex> {
public TrazaFlex(){
}
...
...
@Override
public void bindViewHolder(FlexibleAdapter<IFlexible> adapter, ViewHolderTrazaFlex holder, int position, List<Object> payloads) {
holder.mTitle.setText(nombreTraza);
// Title appears disabled if item is disabled
holder.mTitle.setEnabled(isEnabled());
Context context = holder.itemView.getContext();
Drawable drawable = DrawableUtils.getSelectableBackgroundCompat(
Color.WHITE, Color.parseColor("#dddddd"), // Same color of divider
DrawableUtils.getColorControlHighlight(context));
DrawableUtils.setBackgroundCompat(holder.itemView, drawable);
}
public class ViewHolderTrazaFlex extends FlexibleViewHolder {
public TextView mTitle;
public ViewHolderTrazaFlex(View view, FlexibleAdapter adapter) {
super(view, adapter);
mTitle = (TextView) view.findViewById(R.id.id_nombre_traza);
}
}
А это мой фрагмент:
public class TrazaFragment extends Fragment implements ActionMode.Callback, FlexibleAdapter.OnItemClickListener, FlexibleAdapter.OnItemLongClickListener {
ArrayList<Traza> listaTrazas;
RecyclerView recyclerTrazas;
View vista;
private FlexibleAdapter mAdapter;
private ActionMode mActionMode;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
getActivity().setTitle("Trazas");
vista = inflater.inflate(R.layout.fragment_traza, container, false);
listaTrazas = new ArrayList<>();
recyclerTrazas = (RecyclerView) vista.findViewById(R.id.recyclerTrazas);
recyclerTrazas.setLayoutManager(new LinearLayoutManager(getContext()));
GetTrazas mAttempTraza = new GetTrazas();
mAttempTraza.execute((Void) null);
return vista;
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mode.getMenuInflater().inflate(R.menu.selected_menu, menu);
mAdapter.setMode(Mode.MULTI);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
mAdapter.setMode(Mode.IDLE);
mActionMode = null;
}
@Override
public boolean onItemClick(View view, int position) {
if (mActionMode != null && position != RecyclerView.NO_POSITION) {
// Mark the position selected
toggleSelection(position);
Toast.makeText(getContext(),"OnItemLongClick ", Toast.LENGTH_LONG).show();
return true;
} else {
Toast.makeText(getContext(),"OnItemLongClick ", Toast.LENGTH_LONG).show();
// Handle the item click listener
// We don't need to activate anything
return false;
}
}
@Override
public void onItemLongClick(int position) {
if (mActionMode == null) {
getActivity().startActionMode(this);
}
Toast.makeText(getContext(),"OnItemLongClick ", Toast.LENGTH_LONG).show();
toggleSelection(position);
}
/**
* Toggle the selection state of an item.
* If the item was the last one in the selection and is unselected, the ActionMode
* is stopped.
*/
private void toggleSelection(int position) {
// Mark the position selected
mAdapter.toggleSelection(position);
int count = mAdapter.getSelectedItemCount();
if (count == 0) {
mActionMode.finish();
} else {
setContextTitle(count);
}
}
private void setContextTitle(int count) {
mActionMode.setTitle(String.valueOf(count) + " " + (count == 1 ?
"Action Selected One" :
"Action Selected Many"+count));
}
public class GetTrazas extends AsyncTask<Void, Void, Boolean> {
//connects to service and get json
return null;
}
@Override
protected void onPostExecute(final Boolean success) {
recyclerTrazas = (RecyclerView) vista.findViewById(R.id.recyclerTrazas);
//// recyclerTrazas.setLayoutManager(new LinearLayoutManager(getContext()));
List<IFlexible> listaTrazasFlex = getDatabaseList();
FlexibleAdapter<IFlexible> adapterFlexTraza = new FlexibleAdapter<>(listaTrazasFlex);
recyclerTrazas.setAdapter(adapterFlexTraza);
}
public List<IFlexible> getDatabaseList() {
//connects to json and returns a list
}
}
catch (JSONException e) {
}
return list;
}
}
}
- Может ли ActionMode использоваться только в активности?
- Где и как я могу настроить прослушиватель для адаптера, чтобы сделать элементы активируемыми
- Может ли кто-нибудь объяснить мне, как он работает в окне рециркулятора во фрагменте и как работает панель режимов действий вверху при запуске режима выбора