Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Работа с большими данными http://www.cyberforum.ru/android-dev/thread1800993.html
Добрый день. Существуют ситуации, когда нужно подгрузить и распарсить что-то очень большое, ну, например, адреса Москвы. Если поставить парсить напрямую сразу всё, то, как правило, памяти телефона не хватит. Я делаю по частям в разных окнах, после окончания процесса перезапускаю окно, но бывают случаи, когда это слабо помогает, в процессе начинает глючить прогрессбар, затем гаснет экран и тп,...
Программирование Android Не выбирается нужная icon Вообщем создал каталоги drawable-mdpi, drawable-hdpi и т.д. Закинул туда рисунки соответсвующих размеров, но все ровно выбирается иконка с главного drawable. Density экрана 430dpi, то есть должен выбираться drawable-xhdpi, но выбирается иконка из главного drawable. В чем подвох? http://www.cyberforum.ru/android-dev/thread1800965.html
Кнопка назад Программирование Android
есть программа в ней до 10 activity если переходить по ним, то далее при нажатии кнопки назад происходят обратные переходы , а нужно сразу в одно нажатие перейти к главной activity Как можно переопределить такой переход при нажатии?
Как убрать шторку? (выпадающее меню) Программирование Android
Как можно убрать в режиме fullscreen activity шторку (выпадающее меню)? Ее не видно на экране но при нажатии в верху экрана она появляется и перекрывает интерфейс программы . А при выходе из fullscreen ее (шторку) нужно снова делать видимой.
Программирование Android Как отключить звук в телефоне (вибро режим) ? http://www.cyberforum.ru/android-dev/thread1800928.html
Как можно отключить звук в телефоне чтобы осталась только вибрация, НО настройки касались бы только программы. Т.к. если сделать возврат настроек(на те что были до запуска программы) при закрытии программы , то если программа закроется не корректно то настройки останутся не возвращенными в первоначальное состояние.
Программирование Android Оформления ActionBar Почему не устанавливается цвет, который определен в name="ActionBar"? А цвет берется с colorPrimaryDark... <resources> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="actionBarStyle">@style/ActionBar</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorBlue</item> </style> подробнее

Показать сообщение отдельно
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
02.09.2016, 08:51  [ТС]     Retrofit + simpleXml может у кого есть примеры?
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'
    }
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru