Hello everyone) Help with a little problem. When adding an Item to a ListView, I can’t make it so that EditText can be edited. My Item:

<?xml version="1.0" encoding="utf-8"?> 

 <FrameLayout android:layout_width="120dp" android:layout_height="120dp" android:layout_column="0" android:layout_margin="8dp" android:layout_row="0" android:layout_rowSpan="3"> <ImageView android:id="@+id/imageView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|bottom|left|right|top" android:src="@mipmap/happyface" /> </FrameLayout> <TextView android:id="@+id/textView25" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="1" android:layout_margin="3dp" android:text="Длина" android:textAppearance="?android:attr/textAppearanceSmall" /> <TextView android:id="@+id/textView26" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="1" android:layout_margin="3dp" android:layout_row="1" android:text="Ширина" android:textAppearance="?android:attr/textAppearanceSmall" /> <TextView android:id="@+id/textView27" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="1" android:layout_margin="3dp" android:layout_row="2" android:text="Количество" android:textAppearance="?android:attr/textAppearanceSmall" /> <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="2" android:layout_marginLeft="3dp" android:layout_marginRight="3dp" android:layout_row="0" android:width="100dp" android:enabled="true" android:focusable="false" android:focusableInTouchMode="false" android:gravity="center" android:inputType="numberSigned" android:maxLength="@integer/maxDigitsInputDetail" android:singleLine="true" android:text="100" android:textIsSelectable="true" /> <EditText android:id="@+id/editText3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="2" android:layout_marginLeft="3dp" android:layout_marginRight="3dp" android:layout_row="1" android:width="100dp" android:enabled="true" android:focusable="false" android:focusableInTouchMode="false" android:gravity="center_vertical|center_horizontal" android:inputType="numberSigned" android:maxLength="@integer/maxDigitsInputDetail" android:singleLine="true" android:text="100" android:textIsSelectable="true" /> <EditText android:id="@+id/editText4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="2" android:layout_marginLeft="3dp" android:layout_marginRight="3dp" android:layout_row="2" android:width="100dp" android:enabled="true" android:focusable="false" android:focusableInTouchMode="false" android:gravity="center_vertical|center_horizontal" android:inputType="numberSigned" android:maxLength="@integer/maxDigitsInputDetail" android:singleLine="true" android:text="1" android:textIsSelectable="true" /> <TextView android:id="@+id/textView28" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="3" android:layout_margin="3dp" android:layout_row="0" android:text="мм" android:textAppearance="?android:attr/textAppearanceSmall" /> <TextView android:id="@+id/textView29" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="3" android:layout_margin="3dp" android:layout_row="1" android:text="мм" android:textAppearance="?android:attr/textAppearanceSmall" /> <TextView android:id="@+id/textView30" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="3" android:layout_margin="3dp" android:layout_row="2" android:text="шт." android:textAppearance="?android:attr/textAppearanceSmall" /> <TextView android:id="@+id/textView32" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Small Text" android:textAppearance="?android:attr/textAppearanceSmall" android:visibility="gone" /> 

ListView:

 <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/listView4" android:layout_below="@+id/gridLayout" android:layout_centerHorizontal="true" /> 

And the code of the Activity itself:

 public class detailListOfMaterial extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemClickListener { Button addNewDetail; TextView TopNameOfMaterial; //----------------- ListView listView; private static final int CM_DELETE_ID = 1; SimpleAdapter simpleAdapter; ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>( LocalInfo.getOrders().size()); Map<String, Object> m; final String ATTRIBUTE_NAME_DETAIL_lENGTH = "LENGTH"; final String ATTRIBUTE_NAME_DETAIL_WIDTH = "WIDTH"; final String ATTRIBUTE_NAME_DETAIL_COUNT = "COUNT"; final String ATTRIBUTE_NAME_DETAIL_ID = "ID"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail_list_of_material); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); addNewDetail = (Button) findViewById(R.id.button7); addNewDetail.setOnClickListener(this); listView = (ListView) findViewById(R.id.listView4); TopNameOfMaterial = (TextView) findViewById(R.id.textView31); TopNameOfMaterial.setText("Список деталей"); DetailorUtils.setIdOfDetailUsesInMaterial(LocalInfo.getIdWorkMaterial(), LocalInfo.getIdWorkOrder()); for (int i = 0; i < LocalInfo.getIdPositionDetailUsedInMaterial().size(); i++) { m = new HashMap<String, Object>(); m.put(ATTRIBUTE_NAME_DETAIL_lENGTH, LocalInfo.getWorkOrder().getDetails().get(LocalInfo.getIdPositionDetailUsedInMaterial().get(i)).getLength()); m.put(ATTRIBUTE_NAME_DETAIL_WIDTH, LocalInfo.getWorkOrder().getDetails().get(LocalInfo.getIdPositionDetailUsedInMaterial().get(i)).getWidth()); m.put(ATTRIBUTE_NAME_DETAIL_COUNT, LocalInfo.getWorkOrder().getDetails().get(LocalInfo.getIdPositionDetailUsedInMaterial().get(i)).getAmount()); m.put(ATTRIBUTE_NAME_DETAIL_ID, LocalInfo.getWorkOrder().getDetails().get(LocalInfo.getIdPositionDetailUsedInMaterial().get(i)).getIdDetail()); data.add(m); } String[] from = {ATTRIBUTE_NAME_DETAIL_lENGTH, ATTRIBUTE_NAME_DETAIL_WIDTH, ATTRIBUTE_NAME_DETAIL_COUNT, ATTRIBUTE_NAME_DETAIL_ID}; int[] to = {R.id.editText2, R.id.editText3, R.id.editText4, R.id.textView32}; simpleAdapter = new SimpleAdapter(this, data, R.layout.unitlist_detail, from, to); listView.setAdapter(simpleAdapter); listView.setOnItemClickListener(this); registerForContextMenu(listView); } @Override public void onClick(View view) { switch (view.getId()) { case (R.id.button7): { Detail detail = new Detail(); detail.setIdOrder(LocalInfo.getIdWorkOrder()); detail.setLength(100); detail.setWidth(100); detail.setIdMaterial(LocalInfo.getIdWorkMaterial()); detail.setAmount(1); detail.setIdDetail((int) new Date().getTime()); LocalInfo.getWorkOrder().getDetails().add(detail); LocalInfo.setOrders(LocalInfo.getOrders()); m = new HashMap<String, Object>(); m.put(ATTRIBUTE_NAME_DETAIL_lENGTH, detail.getLength()); m.put(ATTRIBUTE_NAME_DETAIL_WIDTH, detail.getWidth()); m.put(ATTRIBUTE_NAME_DETAIL_COUNT, detail.getAmount()); m.put(ATTRIBUTE_NAME_DETAIL_ID, detail.getIdDetail()); data.add(m); simpleAdapter.notifyDataSetChanged(); break; } } } @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Intent intent =new Intent(this, detailMain.class); startActivity(intent); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.add(0, CM_DELETE_ID, 0, "Видалити"); } @Override public boolean onContextItemSelected(MenuItem item) { if (item.getItemId() == CM_DELETE_ID) { AdapterView.AdapterContextMenuInfo acmi = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); Log.v("position", String.valueOf(acmi.position)); String _id = data.get(acmi.position).get("ID").toString(); for(int i=0;i<LocalInfo.getWorkOrder().getDetails().size();i++){ if(LocalInfo.getWorkOrder().getDetails().get(i).getIdDetail()==Integer.parseInt(_id)){ LocalInfo.getWorkOrder().getDetails().remove(i); } } LocalInfo.setOrders(LocalInfo.getOrders()); data.remove(acmi.position); simpleAdapter.notifyDataSetChanged(); return true; } return super.onContextItemSelected(item); } 

}

When adding a new Item to the ListView, the dialog menu for the Item works, but there is no access to edit EditTexts, but if you remove the context menu, you can edit it. I tried the options with android:focusable="false" android:focusableInTouchMode="false" or is it better to throw the dialog menu somewhere else? Here one "may" nuance - click on the Item is a transition to another Activity

    1 answer 1

    Write your adapter instead of using the system one. And even better - go to RecyclerView . And do not hang the listener on the elements outside the adapter - this should be done in the adapter, in getView

    And you cannot make EditText work on both input and redirection to activations. The latter must be put on by-l another list item markup