ItemListFragment:

public class ItemsListFragment extends Fragment { private BoxAdapter adapterItems; private ListView lvItems; public static OnItemSelectedListener listener; public interface OnItemSelectedListener { public void onItemSelected(Item i); } @Override public void onAttach(Activity activity) { super.onAttach(activity); if (activity instanceof OnItemSelectedListener) { listener = (OnItemSelectedListener) activity; } else { throw new ClassCastException(activity.toString() + " must implement ItemsListFragment.OnItemSelectedListener"); } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Create arraylist from item fixtures ArrayList<Item> items = new ArrayList<Item>(); String stat = getActivity().getIntent().getStringExtra("stat"); switch (stat) { case "adr": Item item = new Item(); items = item.getItems(getContext()); break; case "deladr": Item itemDel = new Item(); items = itemDel.getDeletedItems(getContext()); break; } adapterItems = new BoxAdapter(getContext(), items); //adapterItems = new ArrayAdapter<Item>(getActivity(), android.R.layout.simple_list_item_activated_1, items); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate view View view = inflater.inflate(R.layout.fragment_items_list, container, false); // Bind adapter to ListView lvItems = (ListView) view.findViewById(R.id.lvItems); lvItems.setAdapter(adapterItems); lvItems.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View item, int position, long rowId) { // Retrieve item based on position Item i = adapterItems.getItem(position); // Fire selected event for item listener.onItemSelected(i); } }); return view; } /** * Turns on activate-on-click mode. When this mode is on, list items will be * given the 'activated' state when touched. */ public void setActivateOnItemClick(boolean activateOnItemClick) { // When setting CHOICE_MODE_SINGLE, ListView will automatically // give items the 'activated' state when touched. lvItems.setChoiceMode( activateOnItemClick ? ListView.CHOICE_MODE_SINGLE : ListView.CHOICE_MODE_NONE); } } 

BoxAdapter:

 public class BoxAdapter extends BaseAdapter { Context ctx; LayoutInflater lInflater; ArrayList<Item> objects; BoxAdapter adapter; public BoxAdapter(Context context, ArrayList<Item> OrderModels) { ctx = context; objects = OrderModels; lInflater = (LayoutInflater) ctx .getSystemService(Context.LAYOUT_INFLATER_SERVICE); adapter = this; } // ΠΊΠΎΠ»-Π²ΠΎ элСмСнтов @Override public int getCount() { return objects.size(); } // элСмСнт ΠΏΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ @Override public Item getItem(int position) { return objects.get(position); } // id ΠΏΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ @Override public long getItemId(int position) { return position; } // ΠΏΡƒΠ½ΠΊΡ‚ списка @Override public View getView(final int position, View convertView, ViewGroup parent) { // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ созданныС, Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ view View view = convertView; if (view == null) { view = lInflater.inflate(R.layout.order_item, parent, false); } OrderModel p = getOrderModel(position).getTitle(); try { ((TextView) view.findViewById(R.id.adress)).setText(p.adress); ((TextView) view.findViewById(R.id.fio)).setText(p.fio); ((TextView) view.findViewById(R.id.tel)).setText(p.tel + " Time: " + p.time); } catch (Exception ex) { Log.d("TimeTranslationError", ex.getMessage()); } Button btnCh = (Button) view.findViewById(R.id.button_change); btnCh.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { WorkSQLite.UpdateOrders(ctx, getOrderModel(position).getTitle().id); objects.remove(position); adapter.notifyDataSetChanged(); } }); view.setOnClickListener(new AdapterView.OnClickListener() { @Override public void onClick(View t) { // Retrieve item based on position Item i = getItem(position); // Fire selected event for item listener.onItemSelected(i); } }); /*LinearLayout contentText = (LinearLayout) view.findViewById(R.id.contentText); contentText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { //ItemsListFragment().listener.onItemSelected(getItem(position)); new ItemsListActivity().onItemSelected(getItem(position)); } });*/ return view; } // Ρ‚ΠΎΠ²Π°Ρ€ ΠΏΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Item getOrderModel(int position) { return ((Item) getItem(position)); } } 

ItemsListActivity:

 public class ItemsListActivity extends FragmentActivity implements OnItemSelectedListener { private boolean isTwoPane = false; public String stat; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_items); stat = getIntent().getStringExtra("stat"); determinePaneLayout(); } private void determinePaneLayout() { FrameLayout fragmentItemDetail = (FrameLayout) findViewById(R.id.flDetailContainer); if (fragmentItemDetail != null) { isTwoPane = true; ItemsListFragment fragmentItemsList = (ItemsListFragment) getSupportFragmentManager().findFragmentById(R.id.fragmentItemsList); fragmentItemsList.setActivateOnItemClick(true); } } public void ClearCar() { ArrayList<OrderModel> OrderModels = WorkSQLite.ReadOrders(this); if (OrderModels.size() > 0) { ArrayList<OrderModel> result = new ArrayList<OrderModel>(); for (OrderModel object : OrderModels) { if (object.getValue("status").equals("2")) result.add(object); } if (result.size() == OrderModels.size()) { new GoodsFromDB.UpdateGoods().execute(getFilesDir().getPath().toString()); WorkSQLite.DeleteAllOrders(this); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.items, menu); return true; } @Override public void onItemSelected(Item item) { if (isTwoPane) { // single activity with list and detail // Replace frame layout with correct detail fragment ItemDetailFragment fragmentItem = ItemDetailFragment.newInstance(item); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.flDetailContainer, fragmentItem); ft.commit(); } else { // separate activities // launch detail activity using intent Intent i = new Intent(this, ItemDetailActivity.class); i.putExtra("item", item); startActivity(i); } } } 

I do not know what to do

I am trying to call the OnItemClickListener handler in the ItemListFragment and it simply does not respond on top of the custom adapter.

In the adapter, I set the view for the view, when I click on the list item, crashes with the exeption android.content.res.Resources $ NotFoundException: Resource ID # 0x7f04001a

Help me to understand

    1 answer 1

    Add a listener right in the adapter. Assign an id root element of the item, find it in the getView() method and assign the listener. Do not forget to add an item to the root element.

     android:clickable="true" android:focusable="true" 
    • i'm just starting, is it possible to read more? - zaki hatfild
    • I gave the root element an id, and assign it a listener in getView (). Gives exeption android.content.res.Resources $ NotFoundException: Resource ID # 0x7f04001a, as described above - zaki hatfild