我使用了两种不同颜色的自定义行。但它返回的是同一行是黑色的。我也有一个黄色的行,但它只返回一个黑色的行。我无法理解它,因此我在下面分享了我的源代码。拜托,帮帮我
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();
}
答案 0 :(得分:0)
如果您在ListView
中有多个观看次数,则需要的时间超过SimpleAdapter
,因为您需要覆盖一些方法。您最终希望扩展BaseAdapter
以制作自定义适配器。制作自己的适配器时需要的第一种方法是getViewTypeCount()
。这告诉适配器有一定数量的视图类型,它应该考虑到这一点。您需要覆盖的第二种方法是getItemViewType()
,以便ListView
知道哪些视图具有哪种类型,以便它可以相应地处理视图回收。然后在getView()
方法中,根据位置,根据视图类型返回不同类型的视图。
答案 1 :(得分:0)
您可以使用多种视图类型作为建议的其他答案,或者您可以根据getView内部的位置以编程方式设置列表项的颜色。
无论哪种方式,您都需要自定义适配器。