java - SimpleAdapter 具有两个不同颜色的自定义行

标签 java android

我使用了两个不同颜色的自定义行。但它返回同一行黑色。我也有一个黄色行,但它只返回一个黑色行。我无法理解它,因此我在下面分享了我的源代码。请帮助我

json_orders = json.getJSONArray("orders");
                for(int i = 0; i < json_orders.length(); i++){
                JSONObject c = json_orders.getJSONObject(i);

                // Storing  JSON item in a Variable
                String orderDate = c.getString("orderDate");
                String orderTime = c.getString("orderTime");
                String orderId = c.getString("orderId");
                String driverStatusId = c.getString("driverStatusId");                  

                // Adding value HashMap key => value


                HashMap<String, String> map = new HashMap<String, String>();

                map.put("orderDate", orderDate);
                map.put("orderTime", orderTime);
                map.put("orderId", orderId);

                oslist.add(map);
                list=(ListView)view.findViewById(R.id.list);

                ListAdapter  adapter = new SimpleAdapter(getActivity(), oslist, i, null, null);

                if (!driverStatusId.equals("4"))
                {
                    adapter = new SimpleAdapter(getActivity(), oslist,
                            R.layout.list_row_new,
                            new String[] { "orderDate", "orderTime"}, new int[] {
                            R.id.orderDate, R.id.orderTime});
                }
                else {
                    adapter = new SimpleAdapter(getActivity(), oslist,
                            R.layout.list_row,
                            new String[] { "orderDate", "orderTime"}, new int[] {
                            R.id.orderDate, R.id.orderTime});
                }

                list.setAdapter(adapter);

                list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                    @Override
                    public void onItemClick(AdapterView<?> parent, View view,
                                            int position, long id) {
                        //Toast.makeText(getActivity(), "You Clicked at "+oslist.get(+position).get("orderId"), Toast.LENGTH_SHORT).show();     

                        Fragment fragment = null;
                        fragment = new OrderDetailsFragment();

                        final Bundle bundle = new Bundle();
                         bundle.putString("orderId", oslist.get(+position).get("orderId"));
                         Log.i("BUNDLE", bundle.toString());
                         fragment.setArguments(bundle);

                        FragmentManager fragmentManager = getFragmentManager();
                        fragmentManager.beginTransaction()
                                .replace(R.id.frame_container, fragment, "OrderDetailsFragment").commit();

                        //new UpdateDestinationInfo().execute(String.valueOf(db.getUserDetails().get("currentorderid")), oslist.get(+position).get("longlat"));
                       // Toast.makeText(getActivity(), "You Clicked at "+String.valueOf(db.getUserDetails().get("id")), Toast.LENGTH_SHORT).show();

                    }

最佳答案

如果 ListView 中有多个 View ,您将需要的不仅仅是 SimpleAdapter,因为您需要重写一些方法。您最终需要扩展 BaseAdapter 来创建自定义适配器。制作自己的适配器时需要的第一个方法是getViewTypeCount()。这告诉适配器存在一定数量的 View 类型,并且它应该考虑到这一点。您需要重写的第二个方法是 getItemViewType() ,以便 ListView 知道哪些 View 具有什么类型,从而可以相应地处理 View 回收。然后,在 getView() 方法中,根据位置,根据 View 类型返回不同类型的 View 。

关于java - SimpleAdapter 具有两个不同颜色的自定义行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25109018/

相关文章:

java - 如何在按钮点击之间创建延迟(以防止按钮垃圾邮件)

android - 其他进程可以看到总线事件吗?

java - 在 WebSphere 中注入(inject) spring 资源失败

Java:JFileChooser 获取国际文件名

java - 不能影响始终为空的简单 Double[] 表的值 - 2 个代码之间的比较

java - 为 Android 的 Amazon AWS SES 发送带有附件的电子邮件?

android - 如何使用android使用authrequest在LinkedIn中注销?

java - Android 应用停止调用电话

android - fragment 对话框使应用程序崩溃,有其他解决方案吗?

java - 使 JTextField 仅接受一位数字