2015-06-01 2 views
0

Я создаю запрос запроса друга на приложение. Я пытаюсь отобразить список запросов друзей, которые вы можете принять, нажав на них.Проблема Настройка ParseQueryAdapter

Вот мой код, который я запускаю в методе onCreate() действия. Как вы можете видеть, мне нужен элемент ListView для каждого объекта запроса друга для текущего пользователя, который я создаю в QueryAdapter. Я хочу установить изображение и текст каждого элемента запроса друга ListView в поля profileImageMedium и username пользователя, отправившего запрос друга. Каждый объект запроса друга указывает на fromUser, который отправил запрос.

Проблема в том, что методы setTextKey() и setImageKey() не будут работать для этих ключей, поскольку они являются ключами объекта, на который указывает запрос друга. Какой самый лучший способ, чтобы установить текстовые и графические ключи к этим полям

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_friend_request); 

    // Instantiate ParseQueryAdapter 
    final ParseQueryAdapter<ParseObject> friendRequestListAdapter = 
      new ParseQueryAdapter<ParseObject>(this, new ParseQueryAdapter.QueryFactory<ParseObject>() { 
       public ParseQuery<ParseObject> create() { 
        // Here we can configure a ParseQuery to our heart's desire. 
        ParseQuery<ParseObject> friendRequestQuery = new ParseQuery("FriendRequests"); 
        friendRequestQuery.whereEqualTo("toUser", ParseUser.getCurrentUser()); 
        friendRequestQuery.include("fromUser"); 

        return friendRequestQuery; 
       } 
      }); 

    // Set as adapter for our listview 
    ListView friendRequestListView = (ListView) findViewById(R.id.friendRequestListView); 
    friendRequestListView.setOnItemClickListener(friendRequestClickedHandler); 
} 

ответ

1

Я думаю, что решение для вас, чтобы создать подкласс ParseQueryAdapter и переопределить getItemView() метод. Так же, как это:

class QueryAdapter extends ParseQueryAdapter { 
    public QueryAdapter(Context context, ParseQueryAdapter.QueryFactory<T> queryFactory) { 
     super(context, queryFactory, 0); 
    } 

    @Override 
    public getItemView(ParseObject object, View v, ViewGroup parent) { 
     if (null == v) { 
      v = View.inflate(getContext(), R.layout.your_layout, null); 
     } 
     TextView name = (TextView) v.findViewById(R.id.text_view_id); 
     ImageView image = (ImageView) v.findViewById(R.id.image_view_id); 
     ParseUser fromUser = object.getParseUser("fromUser"); 
     name.setText(fromUser.getString("username"); 
     !-- Load your image here 
    } 
} 

Я не знаю, как вы загружаете изображения, но есть идея - если ваш profileImageMedium является URL, то использовать некоторые загрузки изображений библиотеки, такие как Пикассо, или если ParseFile ImageView изменения в камере на ParseImageView и позвонить

image.setParseFile(file); 
image.loadInBackground(); 

Затем в ParseQueryAdapter изменения активности на ваш QueryAdapter и не забудьте установить QueryAdapter в ListView

friendRequestListView.setAdapter(QueryAdapter); 
+0

Отлично! Сначала я просмотрел это в документах Android и почему-то не думал, что это для меня. Но ваше объяснение помогло мне выяснить, как его применять. Благодаря! – ThePartyTurtle

Смежные вопросы