Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 78
#1

Retrofit + simpleXml может у кого есть примеры? - Программирование Android

31.08.2016, 17:58. Просмотров 534. Ответов 3
Метки нет (Все метки)

Retrofit + simpleXml может у кого есть примеры рабочего кода? Что-то с JSON чего хочешь. А с XML почти ничего нету в инете.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2016, 17:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Retrofit + simpleXml может у кого есть примеры? (Программирование Android):

Есть у кого рабочий пример Анимационного скроллинга ListView? - Программирование Android
Есть у кого рабочий пример Анимационного скроллинга ListView?

Есть ли примеры или учебник по программированию на C++ под Android? - Программирование Android
Есть ли примеры или учебник по программированию на C++ под Android?

Retrofit Recyclerview - Программирование Android
Здравствуйте, уважаемые форумчане. Помогите добавить onScroll в RecyclerView. Вот код public class MainActivity extends...

Библиотека Retrofit - Программирование Android
Мне нужно освоить библиотеку Retrofit.Я нашол урок https://www.youtube.com/watch?v=c5HX_GoyaDs. Я постарался повторить и у меня возникли...

Retrofit 2 post запрос - Программирование Android
Делал реализацию клиент-сервер, в андроид при помощи retrofit. и встретился с проблемой как реализовать POST запрос. ( GET запрос у меня...

Прокладывание маршрута и Retrofit - Программирование Android
Добрый день. Есть проблема с реализацией маршрутов в приложении. Суть проста: есть 2 точки, необходимо их соединить маршрутом. На основе...

3
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,066
Завершенные тесты: 1
31.08.2016, 18:00 #2
http://ru.lmgtfy.com/?q=Retrofit+simpleXml
1
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 78
31.08.2016, 18:01  [ТС] #3
Серьёзно? Я про рабочий код у кого-то из участников форума. Потому-как уже многое облазил и вижу только куски кода. Зачастую с багами.
0
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 78
02.09.2016, 08:51  [ТС] #4
2 дня работы и я собрал по частям рабочий пример использования Retrofit2 + SimpleXmlConverterFactory + занесение результата в RecyclerView. И если я не ошибаюсь с использованием архитектурного паттерна MVP

В целом всё также как и с JSON, только модель будет другая.

Но пришлось изрядно попотеть. Теперь буду применять к своему проекту, где более сложная структура XML.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        recyclerView = (RecyclerView) findViewById(R.id.foods_recycler_view);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        initRestXML();
    }
 
    private void initRestXML() {
        ApiService service = ApiClient.getClient().create(ApiService.class);
        Call<FoodResponse> call = service.getFoods();
        call.enqueue(new Callback<FoodResponse>() {
            @Override
            public void onResponse(Call<FoodResponse> call, Response<FoodResponse> response) {
                ArrayList<Food> foodList = response.body().getFoodList();
                recyclerView.setAdapter(new FoodsAdapter(foodList, R.layout.food_item, getApplicationContext()));
            }
 
            @Override
            public void onFailure(Call<FoodResponse> call, Throwable t) {
                Log.d("TAG", "onFailure: ");
            }
        });
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
@Root(name = "food")
public class Food {
    @Element(name = "name")
    String name;
 
    @Element(name = "price")
    String price;
 
    @Element(name = "description")
    String description;
 
    @Element(name = "calories")
    String calories;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getPrice() {
        return price;
    }
 
    public void setPrice(String price) {
        this.price = price;
    }
 
    public String getDescription() {
        return description;
    }
 
    public void setDescription(String description) {
        this.description = description;
    }
 
    public String getCalories() {
        return calories;
    }
 
    public void setCalories(String calories) {
        this.calories = calories;
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class ApiClient {
    private static Retrofit retrofit = null;
 
    public static Retrofit getClient() {
        if (retrofit == null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(NetworkConstants.BASE_URL)
                    .addConverterFactory(SimpleXmlConverterFactory.create())
                    .build();
        }
        return retrofit;
    }
 
}
Java
1
2
3
4
public interface ApiService {
    @GET(NetworkConstants.GET_FOODS)
    Call<FoodResponse>getFoods();
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class FoodsAdapter extends RecyclerView.Adapter<FoodsAdapter.FoodViewHolder> {
    private ArrayList<Food> foodList;
    private int rowLayout;
    private Context context;
 
    public static class FoodViewHolder extends RecyclerView.ViewHolder {
        LinearLayout contactsLayout;
        TextView name, price, description, calories;
 
        public FoodViewHolder(View v) {
            super(v);
            contactsLayout = (LinearLayout) v.findViewById(R.id.foods_layout);
            name = (TextView) v.findViewById(R.id.food_name);
            price = (TextView) v.findViewById(R.id.food_price);
            description = (TextView) v.findViewById(R.id.food_description);
            calories = (TextView) v.findViewById(R.id.food_calories);
        }
    }
 
    public FoodsAdapter(ArrayList<Food> foods, int rowLayout, Context context) {
        this.foodList = foods;
        this.rowLayout = rowLayout;
        this.context = context;
    }
 
    @Override
    public FoodsAdapter.FoodViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(rowLayout, parent, false);
        return new FoodViewHolder(view);
    }
 
    @Override
    public void onBindViewHolder(FoodViewHolder holder, int position) {
        holder.name.setText(foodList.get(position).getName());
        holder.price.setText(foodList.get(position).getPrice());
        holder.description.setText(foodList.get(position).getDescription());
        holder.calories.setText(foodList.get(position).getCalories());
    }
 
    @Override
    public int getItemCount() {
        return foodList.size();
    }
}
Java
1
2
3
4
5
6
7
8
9
@Root(name = "breakfast_menu")
public class FoodResponse {
    @ElementList(inline = true)
    private ArrayList<Food> foodList;
 
    public ArrayList<Food> getFoodList() {
        return foodList;
    }
}
Java
1
2
3
4
public class NetworkConstants {
    public static final String BASE_URL = "http://www.w3schools.com/xml/";
    public static final String GET_FOODS = "simple.xml";
}
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.pavel.lesson8.MainActivity">
 
    <android.support.v7.widget.RecyclerView
        android:id="@+id/foods_recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
 
    </android.support.v7.widget.RecyclerView>
</RelativeLayout>
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/foods_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    android:padding="16dp">
 
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical">
 
        <TextView
            android:id="@+id/food_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
 
 
        <TextView
            android:id="@+id/food_price"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
 
        <TextView
            android:id="@+id/food_description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
 
        <TextView
            android:id="@+id/food_calories"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
 
    </LinearLayout>
</LinearLayout>
Добавлено через 12 часов 30 минут
Не забудьте про Permission INTERNET и

Java
1
2
3
4
5
6
7
  compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.android.support:recyclerview-v7:23.3.0'
    compile ('com.squareup.retrofit2:converter-simplexml:2.1.0'){
        exclude group: 'xpp3', module: 'xpp3'
        exclude group: 'stax', module: 'stax-api'
        exclude group: 'stax', module: 'stax'
    }
2
02.09.2016, 08:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2016, 08:51
Привет! Вот еще темы с ответами:

OPTIONS запросы в Retrofit - Программирование Android
Всем привет, никто не сталкивался с данным вопросом? Я нашел в репозитории ретрофита какое-то упоминание но я не знаю как его примернить...

Retrofit, JSON, @POST, @GET - Программирование Android
Уважаемые программисты, прошу вашей помощи! Хожу на курсы по разработке мобильных приложений, месяц, как хожу, мало еще что знаю, но...

Ошибка JSON в Retrofit - Программирование Android
Всем привет! Недавно начал изучение Retrofit как известной библиотеки для REST-запросов. Там всё сильно автоматизировано, например,...

Цепь запросов rxjava + retrofit - Программирование Android
Мне нужно сделать 2 разных запроса через retrofit. Один на авторизацию а второй на получение новостей уже после авторизации(то есть есть 2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.