2014-07-04 76 views
0

我正在创建一个包含2个文本视图的列表,其中包含从parse.com云获得的数据。 两个文本视图是: 1.正常文本(说A) 2.文本格式化成字符串两个日期对象组成(说B)如何在ParseQueryAdapter列表视图中添加2个文本视图

我使用下面的代码为这样:

ADAPTER

public class TripListAdapter extends ParseQueryAdapter<Trips> { 
    SimpleDateFormat formatter = new SimpleDateFormat("MMM dd, yyy"); 
    public TripListAdapter(Context context) { 
     super(context, new ParseQueryAdapter.QueryFactory<Trips>() { 
      public ParseQuery<Trips> create() { 
       // Here we can configure a ParseQuery to display 
       // only top-rated meals. 
       ParseUser currentUser = ParseUser.getCurrentUser(); 
       ParseQuery query = new ParseQuery("Trips"); 
       query.whereEqualTo("user", currentUser); 
       //query.whereContainedIn("rating", Arrays.asList("5", "4")); 
       query.orderByDescending("createdAt"); 
       return query; 
      } 
     }); 
    } 

    @Override 
    public View getItemView(Trips trips, View v, ViewGroup parent) { 

     if (v == null) { 
      v = View.inflate(getContext(), R.layout.item_trip_list, null); 
     } 

     super.getItemView(trips, v, parent); 

     //ParseImageView mealImage = (ParseImageView) v.findViewById(R.id.icon); 
     //ParseFile photoFile = meal.getParseFile("photo"); 
     //if (photoFile != null) { 
      //mealImage.setParseFile(photoFile); 
      //mealImage.loadInBackground(new GetDataCallback() { 
       //@Override 
       //public void done(byte[] data, ParseException e) { 
        // nothing to do 
      // } 
      //}); 
     //} 

     TextView destinationTextView = (TextView) v.findViewById(R.id.trip_destination); 
     destinationTextView.setText(trips.getDestination()); 
     TextView durationTextView = (TextView)v.findViewById(R.id.trip_duration); 
     durationTextView.setText(formatter.format(trips.getStartDate())+" - "+formatter.format(trips.getEndDate())); 
     return v; 
    } 

Trips.java

public class Trips extends ParseObject { 

    public Trips() { 
     // A default constructor is required. 
    } 

    public String getDestination() { 
     return getString("to"); 
    } 

    public void setDestination(String title) { 
     put("to", title); 
    } 

    public String getStartDate() { 
     return getString("start"); 
    } 

    public void setStartDate(Date dateObj) { 
     put("start", dateObj); 
    } 

    public String getEndDate() { 
     return getString("end"); 
    } 

    public void setEndDate(Date dateObj) { 
     put("end", dateObj); 
    } 
} 

使用列表视图代码片段

ListView mTripsList = (ListView)rootView.findViewById(R.id.trips_list); 
     mainAdapter = new ParseQueryAdapter<Trips>(getActivity(), Trips.class); 
     mainAdapter.setTextKey("to"); 
     mTripsList.setAdapter(mainAdapter); 

我只能看到上面的第一个文本(A),而不是第二个带格式化日期对象(B)的文本。我该如何解决 ? 感谢

列表项

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:background="@drawable/bg_card" 
    > 

    <TextView 
     android:id="@+id/trip_destination" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"   
     /> 

    <TextView 
     android:id="@+id/trip_duration" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="40dp" 
     /> 


</LinearLayout> 
+0

ü可以请添加列表视图列布局文件? – user2851150

+0

这只是一个具有两个文本视图的简单水平线性布局。没有什么特别的。 –

回答

1

尝试更换适配器代码

public class TripListAdapter extends ParseQueryAdapter<Trips> { 
     SimpleDateFormat formatter = new SimpleDateFormat("MMM dd, yyyy"); 

     public TripListAdapter(Context context) { 
      super(context, new ParseQueryAdapter.QueryFactory<Trips>() { 
       public ParseQuery<Trips> create() { 
        // Here we can configure a ParseQuery to display 
        // only top-rated meals. 
        ParseUser currentUser = ParseUser.getCurrentUser(); 
        ParseQuery query = new ParseQuery("Trips"); 
        query.whereEqualTo("user", currentUser); 
        //query.whereContainedIn("rating", Arrays.asList("5", "4")); 
        query.orderByDescending("createdAt"); 
        return query; 
       } 
      }); 
     } 

     @Override 
     public View getItemView(Trips trips, View v, ViewGroup parent) { 
      super.getItemView(trips, v, parent); 
      ViewHolder holder; 
      if (v == null) { 
       holder =new ViewHolder(); 
       v = View.inflate(getContext(), R.layout.item_trip_list, null); 
       holder.destinationTextView = (TextView) v.findViewById(R.id.trip_destination); 
       holder.durationTextView = (TextView) v.findViewById(R.id.trip_duration); 
       v.setTag(holder); 
      }else{ 
       holder = (ViewHolder) v.getTag(); 
      } 


      //ParseImageView mealImage = (ParseImageView) v.findViewById(R.id.icon); 
      //ParseFile photoFile = meal.getParseFile("photo"); 
      //if (photoFile != null) { 
      //mealImage.setParseFile(photoFile); 
      //mealImage.loadInBackground(new GetDataCallback() { 
      //@Override 
      //public void done(byte[] data, ParseException e) { 
      // nothing to do 
      // } 
      //}); 
      //} 

      holder.destinationTextView.setText(trips.getDestination()); 
      holder.durationTextView.setText(formatter.format(trips.getStartDate()) + " - " + formatter.format(trips.getEndDate())); 
      return v; 
     } 

     class ViewHolder{ 
      TextView destinationTextView; 
      TextView durationTextView; 

     } 
    } 
+0

我是否也相应地对分段代码进行了更改? –

+0

不,只是尝试只替换您的适配器代码,并让我知道 –

+0

我仍然得到相同的结果。我认为这与settextkey功能有关? –