Помогите решить задачу, в моем способе есть неразрешимая проблема.
Собственно цель: есть коллекция, расширенных от Button кнопок, количество элементов допустим 100, мне необходимо создавать фрагменты с 9-ю кнопками в каждом, из этой коллекции.
Как в фрагмент передать элементы коллекции или саму коллекцию?
Не знаю зачем хранить и передавать список кнопок, но можно попробовать как-то так:
public class SomeFragment extends Fragment {
private static final String BUTTONS_ID = "button_list";
public static SomeFragment newInstance(List<Button> buttons) {
Bundle args = new Bundle();
args.putSerializable(BUTTONS_ID, buttons);
SomeFragment fragment = new SomeFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
List<Button> buttons = (List<Button>) getArguments().getSerializable(BUTTONS_ID);
...
}
}
public class SomeActivity extends Activity {
public void someMethod() {
Fragment someFragment = SomeFragment.newInstance(buttonList);
}
}
Получилось как-то так но боюсь очень уж плохой вариант Фрагмент
import android.app.Fragment;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TableLayout;
import android.widget.TableRow;
import java.util.ArrayList;
public class FragmentOfGameLevels extends Fragment {
private TableRow row1;
private TableRow row2;
private TableRow row3;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Context context = getActivity().getApplicationContext();
TableLayout table = new TableLayout(context);
table.addView(row1);
table.addView(row2);
table.addView(row3);
return table;
}
public void setBtnInFragment( Context context, ArrayList <LvlButton> array){
row1 = new TableRow(context);
row1.setBackgroundColor(Color.GREEN);
row2 = new TableRow(context);
row2.setBackgroundColor(Color.BLUE);
row3 = new TableRow(context);
row3.setBackgroundColor(Color.RED);
row1.addView(array.get(0));
row1.addView(array.get(1));
row1.addView(array.get(2));
row2.addView(array.get(3));
row2.addView(array.get(4));
row2.addView(array.get(5));
row3.addView(array.get(6));
row3.addView(array.get(7));
row3.addView(array.get(8));
}
}
Активити
import android.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import java.util.ArrayList;
public class MainGameWindowActivity extends AppCompatActivity {
private Button btnLeft;
private Button btnRight;
private Button btnSound;
private Button btnMusic;
private Button btnLanguage;
private Button btnGooglePlay;
private Button btnExit;
private ArrayList <LvlButton> listBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_game_window_layout);
//устанавливаем настройки экрана (смотри класс WindowConfiguration)
WindowConfiguration.setWindowConfig(this);
WindowConfiguration.getSizeDevice(this);
listBtn = new ArrayList<LvlButton>();
for(int i = 1; i < 10; i++){
listBtn.add(new LvlButton(this, String.valueOf(i),WindowConfiguration.getHeightDevice()/3));
}
//получаем высоту устройства
int heightDevice = WindowConfiguration.getHeightDevice();
FrameLayout frameLayout = findViewById(R.id.frame_layout);
//устанавливаем высоту и ширену контейнера равную реальной высоте устройства
frameLayout.setLayoutParams(new LinearLayout.LayoutParams(heightDevice, heightDevice));
FragmentOfGameLevels fragment = new FragmentOfGameLevels();
fragment.setBtnInFragment(this ,listBtn);
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.frame_layout, fragment);
fragmentTransaction.commit();
}
//____________________________________________________________________________________________
@Override
protected void onResume() {
super.onResume();
WindowConfiguration.setWindowConfig(this);
}
}
правда не пойму почему сначала добавляются кнопки в строки,а потом строки в фрагмент ведь в коде поочередность описана наоборот
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Каким образом можно реализовать выгрузку документа(любого бинарного) ботом на java? Например, по команде бот формирует xlsx и должен выгрузить...
Я новичок и только познаю JavaВ задании сказано применить логику Domain Layer? но что это и как применять не пойму и не могу найти в интернете понятного...