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