SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
-
WOLVERINE
- Сообщения: 8
- Зарегистрирован: 28 ноя 2012, 15:13
- Откуда: Минск
-
Контактная информация:
Сообщение
WOLVERINE » 18 дек 2012, 09:43
Доброго времени суток.
Необходимо реализовать список ТОП исполнителей на сетке (GridView).
http://www.lastfm.ru/api/show/user.getTopArtists
вот ссылка на апи
подскажите, плз, как выдирать из ссылки нужные мне данные и отображать их на экране (
пример ссылки)
должно получиться что-то типа этого:
решения не прошу, буду очень рад любым ссылкам - желательно на русском, но и оригинал подойдет
ЗЫ API Key: 111da332f52d0a640e20cb9e53f80884
если надо
-
rezak90
- Сообщения: 3422
- Зарегистрирован: 26 июн 2012, 13:22
- Откуда: UA
-
Контактная информация:
Сообщение
rezak90 » 18 дек 2012, 10:41
ну так это ж xml, взял парсер и погнал =)
R.id.team
Политика на форуме запрещена
-
WOLVERINE
- Сообщения: 8
- Зарегистрирован: 28 ноя 2012, 15:13
- Откуда: Минск
-
Контактная информация:
Сообщение
WOLVERINE » 18 дек 2012, 10:50
rezak90 писал(а):ну так это ж xml, взял парсер и погнал =)
возможно все действительно так просто, но я начал изучать ведройд совсем недавно и знаний, как таковых, нету
хотя вроде нашел пару нормальных факов, буду сейчас разбираться
-
WOLVERINE
- Сообщения: 8
- Зарегистрирован: 28 ноя 2012, 15:13
- Откуда: Минск
-
Контактная информация:
Сообщение
WOLVERINE » 19 дек 2012, 17:09
вроде как сделал парсинг хмл, вот теперь возника вопрос как это все запихнуть в GridView
ParserTopArtists.java
Код: Выделить всё
package com.example.lastfmtask;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.sax.Element;
import android.sax.EndElementListener;
import android.sax.EndTextElementListener;
import android.sax.RootElement;
import android.util.Xml;
public class ParserTopArtists extends XmlItems {
protected InputStream getInputStream() {
URL feedUrl = null;
try {
feedUrl = new URL(getUrl());
} catch (MalformedURLException e) {
// TODO: handle exception
e.printStackTrace();
}
try {
return feedUrl.openConnection().getInputStream();
} catch (IOException e) {
// TODO: handle exception
throw new RuntimeException(e);
}
}
public List<XmlItems> parse() {
final XmlItems currentXml = new XmlItems();
final List<XmlItems> messages = new ArrayList<XmlItems>();
RootElement root = new RootElement("lfm");
Element topartists = root.getChild("topartists");
Element artist = topartists.getChild("artist");
artist.setEndElementListener(new EndElementListener() {
@Override
public void end() {
// TODO Auto-generated method stub
messages.add(currentXml.copy());
}
});
artist.getChild("name").setEndTextElementListener(new EndTextElementListener() {
@Override
public void end(String body) {
// TODO Auto-generated method stub
currentXml.setName(body);
}
});
artist.getChild("image").setEndTextElementListener(new EndTextElementListener() {
@Override
public void end(String body) {
// TODO Auto-generated method stub
currentXml.setImage(body);
}
});
try {
Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8, root.getContentHandler());
} catch (Exception e) {
// TODO: handle exception
throw new RuntimeException(e);
}
return messages;
}
}
TopartistsActivity.java
Код: Выделить всё
package com.example.lastfmtask;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.app.ListActivity;
public class TopartistsActivity extends ListActivity {
private ParserTopArtists parser;
private List<XmlItems> messages;
GridView gridView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_topartists);
parser = new ParserTopArtists();
messages = parser.parse();
List<String> artists = new ArrayList<String>(messages.size());
for (XmlItems msg : messages) {
artists.add(msg.getName());
}
gridView = (GridView) findViewById(R.id.gridView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_topartists, artists);
gridView.setAdapter(adapter);
}
}
XmlItems.java
Код: Выделить всё
package com.example.lastfmtask;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
public class XmlItems extends Activity{
private String name;
private String image;
private String user;
private String apiKey;
private String url;
public void setUrl(String Url) {
this.url = "http://ws.audioscrobbler.com/2.0/?method=user.gettopartists&user="
+ getUser() + "&api_key=" + getApiKey();
}
public void setApiKey(String apiKey) {
this.apiKey = "111da332f52d0a640e20cb9e53f80884";
}
public void setUser(String user) {
this.user = getIntent().getExtras().getString("username");
}
public void setImage(String image) {
this.image = image;
}
public void setName(String name) {
this.name = name;
}
public String getImage() {
return image;
}
public String getName() {
return name;
}
public String getUser() {
return user;
}
public String getApiKey() {
return apiKey;
}
public String getUrl() {
return url;
}
public XmlItems copy() {
XmlItems copy = new XmlItems();
copy.image = image;
copy.name = name;
return copy;
}
}
понимаю, что проблема в том, что требуется ListView
подскажите что и где изменить, что бы это можно было запихнуть в нужный мне GridView
-
rezak90
- Сообщения: 3422
- Зарегистрирован: 26 июн 2012, 13:22
- Откуда: UA
-
Контактная информация:
Сообщение
rezak90 » 19 дек 2012, 18:35
Я бы сделал это в обычном ListView, зачем использовать грид не пойму. Написал адаптер, засунул ему аррейлист и всё чики-пики =)
R.id.team
Политика на форуме запрещена
-
KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Сообщение
KamiSempai » 19 дек 2012, 19:04
rezak90 писал(а):Я бы сделал это в обычном ListView, зачем использовать грид не пойму. Написал адаптер, засунул ему аррейлист и всё чики-пики =)
А мне кажется, что с GridView будет красивее.
Лично я не вижу особой разницы по сложности реализации через ListView или через GridView.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
-
rezak90
- Сообщения: 3422
- Зарегистрирован: 26 июн 2012, 13:22
- Откуда: UA
-
Контактная информация:
Сообщение
rezak90 » 19 дек 2012, 19:33
та и я не вижу особой разницы, просто мне всегда удобней почему то использовать листвью
R.id.team
Политика на форуме запрещена
-
WOLVERINE
- Сообщения: 8
- Зарегистрирован: 28 ноя 2012, 15:13
- Откуда: Минск
-
Контактная информация:
Сообщение
WOLVERINE » 20 дек 2012, 08:03
rezak90 писал(а):Я бы сделал это в обычном ListView, зачем использовать грид не пойму. Написал адаптер, засунул ему аррейлист и всё чики-пики =)
ТЗ требует грид и еще кучу чего еще))