想知道如何使用列表视图的每一行编写一个包含2个textview的列表视图。
我的行将具有如下的xml布局:
simple_list_item_1.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView android:id="@+id/stat_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip"
android:textSize="16dip"
android:textStyle="bold"/>
<TextView
android:id="@+id/stat_number"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip"
android:textSize="16dip"
android:textStyle="bold"
android:layout_below="@id/stat_name"/>
</LinearLayout>
我到目前为止的代码是:
public class PlayerActivity extends Activity {
public Elements name;
public Elements num;
public ArrayList<String> statName = new ArrayList<String>();
public ArrayList<String> statNum = new ArrayList<String>();
private ArrayAdapter<String> nameAdapter;
private ArrayAdapter<String> numAdapter;
private ListView lv;
String url = "http://www.futhead.com/14/players/141/andrea-pirlo/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.player);
lv = (ListView) findViewById(R.id.listView);
new Logo().execute();
new statistics().execute();
nameAdapter = new ArrayAdapter<String>(this, R.layout.simple_list_item_1, R.id.stat_name,statName);
numAdapter = new ArrayAdapter<String>(this, R.layout.simple_list_item_1, R.id.stat_number,statNum);
}
private class statistics extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... arg) {
Document document;
try {
document = Jsoup.connect(url).get();
num = document.select("div#stats-base p");
statNum.clear();
for (Element element : num) {
statNum.add(element.ownText());
}
name = document.select("div#stats-base span");
statName.clear();
for (Element element : name) {
statName.add(element.ownText());
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
lv.setAdapter(nameAdapter);
lv.setAdapter(numAdapter);
}
}
我一开始使用普通的ArrayAdapter,直到我意识到它不支持一个textview,所以我想知道如何实现一个可以支持两个textview的数组适配器。
答案 0 :(得分:1)
要实现此目的,您必须构建自定义适配器并为自定义行布局充气。使用ArrayAdapter将无效,因为
默认情况下,此类需要提供的资源ID引用 一个TextView。如果要使用更复杂的布局,请使用 构造函数也采用字段ID。该字段ID应该 在较大的布局资源中引用TextView。
转到此how-to-make-a-custom-arrayadapter-for-listview,我建议您谷歌寻找更好的替代方案来实施其他Adapters。
答案 1 :(得分:0)
您必须为ListView定义一个自定义适配器(它将为“超级”实现扩展适配器类)。您可以指定布局并指定该自定义布局的每个组件,以根据您的要求显示数据。
要使适配器扩展:http://developer.android.com/reference/android/widget/Adapter.html
另外,请参阅以下内容:
http://www.vogella.com/tutorials/AndroidListView/article.html
http://www.learn-android-easily.com/2013/06/listview-with-custom-adapter.html
Displaying ArrayList items in ListView contains 2 textviews