2017-02-22 23 views
0

Я хочу сделать апи вызов к конечной точке, как это:значения URL Android Установить в RecyclerView Пункт

http://myapi.co/api/users/23/gifts/2 

но viewholder в моем адаптере определяется следующим образом:

public class ViewHolder extends RecyclerView.ViewHolder{ 
    public TextView tvUserName; 
    public TextView tvGiftName; 

    public ViewHolder(View v){ 
     super(v); 

     tvUserName = (TextView) v.findViewById(R.id.user_name); 
     tvGiftName = (TextView) v.findViewById(R.id.gift_name); 
    } 
} 

Таким образом, каждый строка в моем просмотре recycler показывает только имя пользователя и имя подарка.

|---------------------------| 
| user name 1 gift name 1 | 
|---------------------------| 
| user name 1 gift name 3 | 
|---------------------------| 
| user name 3 gift name 9 | 
|---------------------------| 
| user name 9 gift name 1 | 
|---------------------------| 

Когда будет нажат, то следует использовать идентификатор пользователя и подарка идентификатор для того, чтобы сделать еще один запрос, но я не уверен, что это лучший способ использования идентификаторов.

мне было интересно, если это лучший способ решить мою проблему:

Первых добавить еще два вида текста для каждого пункта в моем списке recyclerview, оба из них будет иметь идентификатор пользователя и дар.

public class ViewHolder extends RecyclerView.ViewHolder{ 
    public TextView tvUserName; 
    public TextView tvUserId; 
    public TextView tvGiftName; 
    public TextView tvGiftId; 

    public ViewHolder(View v){ 
     super(v); 

     tvUserName = (TextView) v.findViewById(R.id.user_name); 
     tvUserId = (TextView) v.findViewById(R.id.user_id); 
     tvGiftName = (TextView) v.findViewById(R.id.gift_name); 
     tvGiftId = (TextView) v.findViewById(R.id.gift_id); 

    } 
} 

И сделать текст Id TextViews пустым (для того, чтобы оба из них не появится на экране), поэтому, когда мне нужно, чтобы создать URL я сделать что-то вроде этого:

url = "http://myapi.co/api/users/" + tvUserId.getText() + 
     "/gifts/" + tvUserId.getText(); 

Это правильный подход?

Заранее спасибо

+0

вы можете разместить где вы получаете të значения каждого текста –

ответ

-1

я думаю, вам нужно использовать Uri.Builder

пример:

Uri.Builder builder = new Uri.Builder(); 
builder.scheme("https") 
     .authority("myapi.co/api/users/") 
     .appendPath(tvUserId.getText()) 
     .appendPath(tvUserId.getText()); 
String myUrl = builder.build().toString(); 
+0

Мой деталь recyclerview показывает только USERNAME и GIFTNAME, следует ли добавить USER_ID и GIFT_ID для создания этого URL-адреса? – JavierQQ23

+0

нет, вы можете легко передать id как тег таким образом tvUserName.setTag (USER_ID); tvGiftName.setTag (ID); и получить их таким образом tvUserName.getTag(). ToString(); –