Как получить текст из TextView CustomAdapter в MainActivity?
У меня есть кастомный адаптер, который заполняет ListView MainActivity с переопределенным отображением. Как мне получить текст из TextView адаптера и передать его в MainActivity, где поле TextView адаптера - OpCount? На экран выводится: Слева - Название операции с Чекбоксом и справа OpCount - их кол-во, в дальнейшем я хочу текствью OpCount заменить на EditText, но тогда элемнт LW перестает нажиматься, поэтому я пока просто хочу попытаться получить этот элемнт и умножить его на время операции - массив Time
Код MainActivity:
@Override
public void onResume() {
super.onResume();
try {
db = databaseHelper.open();
c = db.rawQuery("select * from " + TABLE + " group by " + COLUMN_OPERATION , null);
// Колонки курсора в массивы
List<String> opL = new ArrayList<>();
for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
opL.add(c.getString(c.getColumnIndex(COLUMN_OPERATION)));
}
String[] Operation = opL.toArray(new String[0]);
List<String> timeL = new ArrayList<>();
for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
timeL.add(c.getString(c.getColumnIndex(COLUMN_TIME)));
}
String[] Time = timeL.toArray(new String[0]);
List<String> opC = new ArrayList<>();
for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
opC.add(c.getString(c.getColumnIndex(COLUMN_OPCOUNT)));
}
String[] OpCount = opC.toArray(new String[0]);
ListView.setAdapter(new CustomAdapter(this, Operation, OpCount));
button.setOnClickListener(v -> {
SparseBooleanArray positions = ListView.getCheckedItemPositions();
Integer ResintTime = 0;
Integer Count = 0;
TextView.setText("Количество выбранных элементов - "+ Count + " Общее время - "+ ResintTime.toString()+" минут");
for (int i = 0; i<positions.size();i++) {
Boolean checked = positions.valueAt(i);
if (checked){
int k = positions.keyAt(i);
Count +=1;
Integer IntOpCount = Integer.parseInt(OpCount[k]); // в () переменная - String представление Etext.getText
ResintTime += Integer.parseInt(Time[k])*IntOpCount;
TextView.setText("Количество выбранных элементов - "+ Count + " Общее время - "+ ResintTime +" минут");
}
}
});
} catch (Exception e) {
}
}
Код CustomAdapter:
class CustomAdapter extends BaseAdapter
{
Context context;
CheckedTextView htext;
TextView text;
String[] data;
String[] data1;
private static LayoutInflater inflater = null;
public CustomAdapter(Context context, String[] data, String[] data1) {
// TODO Auto-generated constructor stub
this.context = context;
this.data = data;
this.data1 = data1;
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return data.length + data1.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return data[position] + data1[position];
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi = convertView;
if (vi == null)
vi = inflater.inflate(R.layout.item, null);
htext = vi.findViewById(R.id.htext);
text = vi.findViewById(R.id.Etext);
htext.setText(data[position]);
text.setText(data1[position]);
return vi;
}
}
И код item.xml , через который заполняется адаптер:
android:id="@+id/htext"
android:layout_width="251dp"
android:layout_height="64dp"
android:checkMark="?android:attr/listChoiceIndicatorMultiple" />
<TextView
android:id="@+id/Etext"
android:layout_width="fill_parent"
android:layout_height="66dp"
android:paddingLeft="2dp"
android:paddingTop="2dp"
android:paddingRight="2dp" />```