首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListView和适配器指南

ListView和适配器指南
EN

Stack Overflow用户
提问于 2014-05-26 03:36:08
回答 3查看 84关注 0票数 0

处于ListView和适配器问题的十字路口。这样做的目的是显示一组足球队,然后显示他们在ListView中所取得的进球和得分,这些进球和分数是通过意图(作为数组)引入到活动中的。

但是,我只能显示俱乐部名称和显示包含得分和目标的整数数组的问题。我环顾四周,发现了与自定义适配器相关的主题,但我对Android开发还不太了解。

我尝试过将整数数组转换为字符串,但没有成功。我不知道从哪里出发,所以欢迎你提出任何建议。我的代码是:

代码语言:javascript
复制
package com.example.wmcpapersoccer;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class ResultsActivity extends Activity 
{
TextView txtShow;
TextView txtGF;
ListView listview;

String team_0;
String team_1;
String team_2;
String team_3;
String team_4;
String team_5;
String team_6;
String team_7;

int goalsFor_0 = 0;
int goalsFor_1 = 0;
int goalsFor_2 = 0;
int goalsFor_3 = 0;
int goalsFor_4 = 0;
int goalsFor_5 = 0;
int goalsFor_6 = 0;
int goalsFor_7 = 0;

int points_0 = 0;
int points_1 = 0;
int points_2 = 0;
int points_3 = 0;
int points_4 = 0;
int points_5 = 0;
int points_6 = 0;
int points_7 = 0;



@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_results);

    Intent intent_team_data = getIntent();
    String[] club_names = intent_team_data.getStringArrayExtra("footballClubs");
    int[] team_points = intent_team_data.getIntArrayExtra("clubPoints");
    int[] club_goals = intent_team_data.getIntArrayExtra("clubGoals");

    listview = (ListView)findViewById(R.id.listClubs);
    ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(this, R.layout.custom_list_view, club_names);
    listview.setAdapter(myAdapter);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.results, menu);
    return true;
}

}

用custom_list_view xml更新

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listClubs"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceMedium"
android:gravity="center_vertical"
android:paddingLeft="6dip"
android:paddingRight="6dip"
android:textColor="#ffffff"
/>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-26 03:52:15

如果创建一个对象来封装与单个团队相关的数据--名称、得分、所获得的点数等--将更有意义,而不是拥有多个必须单独协调和维护的完全不同的数组。

假设您有这样一个对象,您可以轻松地扩展ArrayAdapter并将其作为参数化类型(例如ArrayAdapter<TeamInfo>)提供。或者,您可以更进一步,通过扩展BaseAdapter编写自定义适配器实现。

我建议您观看ListView的世界,因为它将解释您需要了解的关于使用ListViews和适配器的一切。

票数 1
EN

Stack Overflow用户

发布于 2014-05-26 03:50:18

您需要的是创建一个扩展BaseAdapter的适配器。通过这种方式,您可以定制ListView item的布局。

一个简单的例子是:

代码语言:javascript
复制
/** a custom Adapter */  
public class MyAdapter extends BaseAdapter {  
    private LayoutInflater mInflater; 
    private List<Model> list;

    public MyAdapter(Context context,List<Model> list) {  
        this.mInflater = LayoutInflater.from(context);
        this.list = list;
    }  

    @Override  
    public int getCount() {  
        return mData.size();// size of data 
    }  

    @Override  
    public Object getItem(int position) {  
        return list.get(position);  
    }  

    @Override  
    public long getItemId(int position) {  
        return position;  
    }  

    @Override  
    public View getView(int position, View convertView, ViewGroup parent) {  
        convertView = mInflater.inflate(R.layout.list_item, null);//get your custom item layout  

        //get item's views.set the data 
        your code here.

        return convertView;  
    }  
}  
票数 1
EN

Stack Overflow用户

发布于 2014-05-26 04:19:42

根据你的布局..。您使用的布局几乎与Android默认提供的布局相同,但是android:id在将文本从数组放置到视图中至关重要。

因此,为了快速修复这个问题,我将直接使用Android布局并删除您的自定义布局。若要使用默认布局,请将设置适配器行更改为:

代码语言:javascript
复制
 ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(this, android.R.simple_list_item_1, club_names);

android.R.simple_list_item_1 --这是通向默认布局的路径。

如果仍然希望使用布局,则需要将android:id更改为

代码语言:javascript
复制
android:id="@android:id/text1"

希望这对你有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23862344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档