Я столько всего перепробовал и потратил бесчисленные часы на эту проблему без всякой удачи.
У меня есть ListView
внутри фрагмента. ListView
начинается с пустого значения, но при нажатии кнопки в родительском элементе Fragment
в ListView
создается строка, содержащая как TextView
(сгенерированный с помощью ввода пользователя), так и Spinner
. Spinner
, добавляемое в каждую строку, идентично с использованием того же набора предварительно созданных данных. Затем строка сортируется в алфавитном порядке по имени, введенному в TextView
. Строки в ListView
также можно удалить щелчком других установленных параметров из родительского элемента Fragment
.
Все это прекрасно работает.
Что мне нужно сделать, так это уникально идентифицировать каждый добавляемый объект счетчика, чтобы пользователь мог сохранить и вспомнить позиционное значение каждого объекта счетчика, который связан с каждым именем в содержащей строке ListView
.
Чем я был Можно сделать, по мере роста списка, указывать на самый первый вращающийся объект, самый последний вращающийся объект и вращающийся объект, для которого последний был выбран элемент, но я не могу понять, как указать на каждый указанный c счетчик объект в строке.
PS Я могу указать на каждый TextView
объект, являющийся тем, что они являются именами, которые были добавлены в ArrayList
.
Работа с массивами обычно работает хорошо для меня, но хотя я знаю, как сохранить значения положения счетчика в массиве, чтобы я мог получить их для заданных c счетчиков, я не могу понять, как хранить их для кратных по существу одного и того же счетчика ... Мне кажется, мне нужно создать ArrayList
счетчиков, содержащих каждый счетчик по мере его добавления, и хотя я знаю, как получить доступ к позиционному значению счетчика, я не знать, как получить доступ к позиционному значению каждого счетчика, содержащегося в массиве счетчиков, если это имеет смысл.
Я пробовал setId
и setTag
[использовать положение] для каждого счетчика при его создании, но без удачи. Кажется, что происходит, когда Id и Tag придерживаются только последнего добавленного счетчика.
Я также пытался использовать Intent
, но безуспешно. Приложение вылетает каждый раз, когда я пытаюсь передать его ребенку Fragment
.
Любая помощь будет принята с благодарностью.
Вот код для проблемных точек:
charSav.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
relationsListArray.add(charNameString);
if (frag2_3.relationsSpinner != null && frag2_3.currentRowSpinner != null) {
for (int i = 0; i < frag2_3.relationsListView.getCount(); i++) {
Toast.makeText(getActivity(), "row " +
// outputs outputs name displayed in each textview within each row
relationsListView.getItemAtPosition(i) + "\nT. " +
// outputs top most spinner item selected
currentRowSpinner.getSelectedItem().toString() + "\nB. " +
// outputs bottom most spinner item selected
relationsSpinner.getSelectedItem().toString() + "\nL. " +
// outputs the last spinner item selected whether it be first, last, or somewhere in the middle
relationsItem, Toast.LENGTH_LONG).show();
}
}
}
- дочерний фрагмент, содержащий класс адаптера -
public class RelationsListViewAdapter extends ArrayAdapter<String> {
HashMap<String, Integer> mIdMap = new HashMap<String, Integer>();
public RelationsListViewAdapter(Context context, int textViewResourceId, ArrayList<String> objects) {
super(context, textViewResourceId, objects);
relationsListArray = objects;
for (int i = 0; i < objects.size(); ++i) {
mIdMap.put(objects.get(i), i);
}
}
@Override
public int getCount() { return relationsListArray.size(); }
@Override
public String getItem(int position) { return relationsListArray.get(position); }
@Override
public long getItemId(int position) { String item = getItem(position); return mIdMap.get(item); }
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.listview_spinner_row, null);
}
// Spinner Adapter
adapterRelationsSpinner = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.preStoryPlanRelations)){
@Override
public boolean isEnabled(int position){
if(position == 0) { return false; }
else { return true; }
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
View view = super.getView(position, convertView, parent);
TextView tv = (TextView) view.findViewById(android.R.id.text1);
if (position == 0) {
tv.setTextColor(Color.parseColor("#424242"));
}
tv.setTextSize(12);
tv.setTextAlignment(View.TEXT_ALIGNMENT_TEXT_START);
return view;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView tv = (TextView) view.findViewById(android.R.id.text1);
if (position == 0) {
tv.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));
tv.setTextColor(Color.parseColor("#424242"));
tv.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
}
else {
tv.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
tv.setTextColor(Color.BLACK);
tv.setTextAlignment(View.TEXT_ALIGNMENT_TEXT_START);
}
return view;
}
};
TextView tv = (TextView) view.findViewById(R.id.row_item_textview);
tv.setText(relationsListArray.get(position));
relationsSpinner = (Spinner) view.findViewById(R.id.row_item_spinner);
relationsSpinner.setAdapter(adapterRelationsSpinner);
relationsSpinner.setTag(R.id.row_item_spinner+position);
relationsSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
selectedRowView = (ViewGroup) relationsListView;
currentRowSpinner = (Spinner) selectedRowView.findViewById(R.id.row_item_spinner);
relationsItem = currentRowSpinner.getItemAtPosition(i).toString();
relationsRowPosition = relationsListView.getItemAtPosition(position).toString();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
// TODO Auto-generated method stub
}
});
return view;
}
}