如何在android中加载这些元素以填充列表?
我用它从网页上获取元素列表。如何在android中加载这些元素以填充列表?,android,dom,jsoup,Android,Dom,Jsoup,我用它从网页上获取元素列表。 //获取所有游戏元素 元素游戏=文件选择(“div.FP_Up_TextWrap b”); //创建新的ArrayList ArrayList gameList=新建ArrayList(); //对这些元素的迭代器 ListIterator posit=games.ListIterator(); while(posit.hasNext()){ //将游戏文本添加到ArrayList gameList.add(posit.next().text()); } 这将返
//获取所有游戏元素
元素游戏=文件选择(“div.FP_Up_TextWrap b”);
//创建新的ArrayList
ArrayList gameList=新建ArrayList();
//对这些元素的迭代器
ListIterator posit=games.ListIterator();
while(posit.hasNext()){
//将游戏文本添加到ArrayList
gameList.add(posit.next().text());
}
这将返回我想要的所有标记。但是它返回了完整的标签,标题是我只想要标题,发布日期和一个imgsr。
我想将其返回到列表视图。
我该怎么做呢?我可能完全错了,所以你们可能想看看HTML页面的源代码
编辑-给我空指针错误
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
outputTextView = (TextView)findViewById(R.id.outputTextView);
ListView list = (ListView)findViewById(R.id.list);
ArrayList<String> gameList = new ArrayList<String>();
Document doc = null;
try {
doc = Jsoup.connect("http://www.gamespy.com/index/release.html").get();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Get all td's that are a child of a row - each game has 4 of these
Elements games = doc.select("tr > td.indexList1, tr > td.indexList2");
// Iterator over those elements
ListIterator<Element> postIt = games.listIterator();
while (postIt.hasNext()) {
// Add the game text to the ArrayList
gameList.add(postIt.next().text());
}
String[] items = new String[gameList.size()];
gameList.toArray(items);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, items);
// error points here
list.setAdapter(adapter);
}
}
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
OutputExtView=(TextView)findViewById(R.id.OutputExtView);
ListView列表=(ListView)findViewById(R.id.list);
ArrayList gameList=新建ArrayList();
单据单据=空;
试一试{
doc=Jsoup.connect(“http://www.gamespy.com/index/release.html).get();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
//获得所有td,这是一排的孩子-每个游戏有4个这样的
Elements games=doc.select(“tr>td.indexList1,tr>td.indexList2”);
//对这些元素的迭代器
ListIterator posit=games.ListIterator();
while(posit.hasNext()){
//将游戏文本添加到ArrayList
gameList.add(posit.next().text());
}
String[]items=新字符串[gameList.size()];
游戏列表。toArray(项目);
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_list_item_1,items);
//这里有错误点
list.setAdapter(适配器);
}
}
编辑-列表的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/outputTextView"
/>
<ListView android:layout_height="wrap_content" android:id="@+id/list" android:layout_width="match_parent"></ListView>
</LinearLayout>
您将无法使用此代码“返回列表视图”,但您可以创建自己的列表视图子类,然后使用相同的技术返回该子类:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView listView1 = (ListView) findViewById(R.id.listView1);
ArrayList<String> gameList = new ArrayList<String>();
// Iterator over those elements
ListIterator<Element> postIt = games.listIterator();
while (postIt.hasNext()) {
// Add the game text to the ArrayList
gameList.add(postIt.next().text());
}
String[] items = new String[gameList.size()];
gameList.toArray(items);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.some_list_item_view, items);
listView1.setAdapter(adapter);
}
您可以创建适配器:
public class GamesMetaAdapter implements Adapter extends ListAdapter {
private ArrayList<GameMeta> m_list = new ArrayList<GameMeta>();
private Context m_context = null;
public GamesMetaAdapter(Context context) {
m_context = context;
}
@Override
public int getCount(){
return m_list.size();
}
@Override
public Object getItem(int position){
if(position < m_list.size()){
return m_list.getAt(position);
}
return null;
}
@Override
public long getItemId(int position) {
return (long)position;
}
@Override
public int getItemViewType(int position) {
return IGNORE_ITEM_VIEW_TYPE;
}
@Override
public View getView (int position, View convertView, ViewGroup parent) {
TextView simpleView = new TextView(this.m_context);
String viewText = this.m_items[position].getTitle() + ", Released " + this.m_items[position].getReleaseDate().toString();
simpleView.setText(this.m_items[position].getTitle());
if(TextView.class.isInstance(convertView)) {
convertView = simpleView;
}
return simpleView;
}
@Override
public int getViewTypeCount() {
return 1;
}
@Override
public boolean hasStableIds(){
return false;
}
@Override
public boolean isEmpty() {
return m_list.size() == 0;
}
@Override
public void registerDataSetObserver (DataSetObserver observer) {
}
@Override
public void unregisterDataSetObserver (DataSetObserver observer) {
}
/* LIST ADAPTER MEMBERS */
@Override
public boolean areAllItemsEnabled() {
return true;
}
@Override
public boolean isEnabled(int position) {
return true;
}
}
公共类GamesMetaAdapter实现适配器扩展ListAdapter{
private ArrayList m_list=new ArrayList();
私有上下文m_Context=null;
公共游戏适配器(上下文){
m_context=上下文;
}
@凌驾
public int getCount(){
返回m_list.size();
}
@凌驾
公共对象getItem(int位置){
如果(位置
我这里没有Java编译器,所以如果这不只是复制/粘贴到您的项目中,请不要告诉我,但它应该位于90%的北部
快乐编码
B这将收集标题和发布日期。你还想要哪张照片
// Get all td's that are a child of a row - each game has 4 of these
Elements games = doc.select("tr > td.indexList1, tr > td.indexList2");
// Iterator over those elements
ListIterator<Element> gameIt = games.listIterator();
while (gameIt.hasNext()) {
// Get the title of the game
Element title = gameIt.next();
System.out.println(title.text());
// Unneeded elements
Element platform = gameIt.next();
Element genre = gameIt.next();
// Get the release date of the game
Element release = gameIt.next();
System.out.println(release.text() + "\n@@@@@@");
}
//获取一行中的所有td-每个游戏有4个
Elements games=doc.select(“tr>td.indexList1,tr>td.indexList2”);
//对这些元素的迭代器
ListIterator gameIt=games.ListIterator();
while(gameIt.hasNext()){
//获得比赛的冠军
元素title=gameIt.next();
System.out.println(title.text());
//不需要的元素
Element platform=gameIt.next();
元素流派=gameIt.next();
//获取游戏的发布日期
Element release=gameIt.next();
System.out.println(release.text()+“\n@@@@”);
}
我在给定的网页中没有看到div.FP\u Up\u TextWrap
。您的权利来自我的旧项目。你能把它应该是什么吗?你能把我需要使用的技术,以获得游戏的标题和发布日期?每个人都要参加元素游戏吗?上面的代码与我以前的一个项目中的网页不匹配我是在一节课上完成所有这些的吗?还是分开上课?所有这些是如何联系在一起的?如果要重用适配器,可以将其放在一个类中,也可以将其作为ListView类的私有子类。完全特定于代码样式/标准以及您预期的适配器/视图的任何重用。我对上面的代码有点困惑。。我需要哪一部分才能让它工作?剩下的是额外的吗?@coder_For_Life22-除了为您编写软件之外,没有
public class GamesMetaAdapter implements Adapter extends ListAdapter {
private ArrayList<GameMeta> m_list = new ArrayList<GameMeta>();
private Context m_context = null;
public GamesMetaAdapter(Context context) {
m_context = context;
}
@Override
public int getCount(){
return m_list.size();
}
@Override
public Object getItem(int position){
if(position < m_list.size()){
return m_list.getAt(position);
}
return null;
}
@Override
public long getItemId(int position) {
return (long)position;
}
@Override
public int getItemViewType(int position) {
return IGNORE_ITEM_VIEW_TYPE;
}
@Override
public View getView (int position, View convertView, ViewGroup parent) {
TextView simpleView = new TextView(this.m_context);
String viewText = this.m_items[position].getTitle() + ", Released " + this.m_items[position].getReleaseDate().toString();
simpleView.setText(this.m_items[position].getTitle());
if(TextView.class.isInstance(convertView)) {
convertView = simpleView;
}
return simpleView;
}
@Override
public int getViewTypeCount() {
return 1;
}
@Override
public boolean hasStableIds(){
return false;
}
@Override
public boolean isEmpty() {
return m_list.size() == 0;
}
@Override
public void registerDataSetObserver (DataSetObserver observer) {
}
@Override
public void unregisterDataSetObserver (DataSetObserver observer) {
}
/* LIST ADAPTER MEMBERS */
@Override
public boolean areAllItemsEnabled() {
return true;
}
@Override
public boolean isEnabled(int position) {
return true;
}
}
// Get all td's that are a child of a row - each game has 4 of these
Elements games = doc.select("tr > td.indexList1, tr > td.indexList2");
// Iterator over those elements
ListIterator<Element> gameIt = games.listIterator();
while (gameIt.hasNext()) {
// Get the title of the game
Element title = gameIt.next();
System.out.println(title.text());
// Unneeded elements
Element platform = gameIt.next();
Element genre = gameIt.next();
// Get the release date of the game
Element release = gameIt.next();
System.out.println(release.text() + "\n@@@@@@");
}