У меня есть приложение в android, которое позволяет вам управлять своими школьными классами. Это всего лишь проект для изучения, поэтому ничего серьезного.Android - Получить представление (EditText) по ID из ListView или ArrayAdapter
Теперь, если вы откроете детали из темы, вы сможете увидеть ее и отредактировать. Если вы затем нажмете на сохранение, я должен проверить, что что-то изменилось или что-то новое было добавлено.
Теперь моя проблема в том, что я не понимаю, как я могу получить конкретное представление из ArrayAdapter или из ListView, потому что каждое из этих полей класса генерируется ArrayAdapter, и я должен проверить их все на наличие изменений.
Так что у меня ArrayAdapter, который заполняет ListView со следующими элементами (list_grades_prefab.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="10pt"
android:weightSum="2"
android:orientation="horizontal">
<EditText
android:id="@+id/grade_field"
android:textSize="10pt"
android:textAlignment="center"
android:layout_weight="1"
android:layout_marginRight="10pt"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/weight_field"
android:textSize="10pt"
android:textAlignment="center"
android:layout_weight="0.7"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_weight="0.3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10pt"
android:textStyle="bold"
android:text="%"/>
</LinearLayout>
Херес GetView из ArrayAdapter:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = new ViewHolder();
if(convertView == null){
LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.list_grades_prefab, null);
viewHolder.GradeField = (EditText) convertView.findViewById(R.id.grade_field);
viewHolder.WeightField = (EditText)convertView.findViewById(R.id.weight_field);
convertView.setTag(viewHolder);
}else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.GradeField.setText(String.valueOf(Grades.get(position)[0]));
viewHolder.GradeField.setTextColor(BasicFunctions.colorFromGrade(Grades.get(position)[0]));
viewHolder.WeightField.setText(String.valueOf(Grades.get(position)[1]).split("\\.")[0]);
return convertView;
}
Он просто заполняет различные EditText просмотров с текстом.
Здесь я установить ArrayAdapter (GradesAdapter):
ListView gradeListView = (ListView)findViewById(R.id.grade_list_view);
GradesAdapter gradesAdapter = new GradesAdapter(this, R.layout.list_grades_prefab, grades);
gradeListView.setAdapter(gradesAdapter);
grade_list_view является ListView и сортов является типом двумерный массив дважды.
Как мне получить каждый EditText с id grade_field из ArrayAdapter, когда я не внутри метода getView?
Где вы хотите получить доступ к значению EditText? –
От слушателя ImageButton в методе onCreate активности – Velrest