リーグ テーブルのレイアウトを作成する際に問題が発生しています。現在のレイアウトでは、2 つの行で構成されるテーブルを作成しました。最初の行には必要な見出しがあり、2 番目の行には取得したデータで構成される黒いフィールドがあります。xml ファイルを含むサーバーからデータを取得します。私が抱えている問題は、データを取得できないことです..問題は、データを表示するときに、それにリンクされたレイアウトが必要な ListAdapter を使用することです。しかし、適切なレイアウトをリンクすると、すべての行の後にヘッダーが繰り返されます...例
チームPWLDP
アーセナル 1 1 1 1 1
チームPWLDP
アストン・ヴィラ 1 1 1 1 1
修正するのは簡単なエラーだと思います....おそらく、データを表示するために何か他のものが必要ですか???
以下はメインのコードです
public class tab_1 extends ListActivity {
public int a = Football_appActivity.league;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listplaceholder);
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
if(a==1){
String xml = XMLfunctions.getXML_prem_table();
Document doc = XMLfunctions.XMLfromString(xml);
int numResults = XMLfunctions.numResults(doc);
if((numResults <= 0)){
Toast.makeText(tab_1.this, "League Table", Toast.LENGTH_LONG).show();
finish();
}
NodeList nodes = doc.getElementsByTagName("team");
for (int i = 0; i < nodes.getLength(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element)nodes.item(i);
map.put("id", XMLfunctions.getValue(e, "id"));
map.put("name", "" + XMLfunctions.getValue(e, "name"));
map.put("played", "" + XMLfunctions.getValue(e, "played"));
map.put("won", "" + XMLfunctions.getValue(e, "won"));
map.put("drawn", "" + XMLfunctions.getValue(e, "drawn"));
map.put("lost", "" + XMLfunctions.getValue(e, "lost"));
map.put("points", "" + XMLfunctions.getValue(e, "points"));
mylist.add(map);
}
**
ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.main_tab,
new String[] { "name", "played", "won", "drawn", "lost", "points"},
new int[] { R.id.item_title, R.id.item_played, R.id.item_won,
R.id.item_drawn, R.id.item_lost, R.id.item_points});**
setListAdapter(adapter);
final ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
@SuppressWarnings("unchecked")
HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position);
Toast.makeText(tab_1.this, o.get("name") + " have Won '" + o.get("won") + "' games, and are currently on '" + o.get("points") + "' points!", Toast.LENGTH_LONG).show();
}
});
}
以下は、main_tab.xml というレイアウトです。
<?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"
android:padding="7dp"
>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="1"
android:id="@+id/table123">
<TableRow>
<TextView
android:text="Name"
android:id="@+id/team_title">
</TextView>
<TextView android:text="P "
android:gravity="right"
android:id="@+id/team_played">
</TextView>
<TextView android:text="W"
android:id="@+id/team_won">
</TextView>
<TextView android:text="D"
android:id="@+id/team_drawn">
</TextView>
<TextView android:text="L"
android:id="@+id/team_lost">
</TextView>
<TextView android:text="P"
android:id="@+id/team_points">
</TextView>
</TableRow>
<TableRow>
<TextView
android:id="@+id/item_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:padding="2dp"
android:textSize="20dp" />
<TextView
android:id="@+id/item_played"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:padding="2dp"
android:textSize="13dp" />
<TextView
android:id="@+id/item_won"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dp"
android:textSize="13dp" />
<TextView
android:id="@+id/item_drawn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dp"
android:textSize="13dp" />
<TextView
android:id="@+id/item_lost"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dp"
android:textSize="13dp" />
<TextView
android:id="@+id/item_points"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dp"
android:textSize="13dp" />
</TableRow>
</TableLayout>
</LinearLayout>
以下は、ListPlaceHolder.XML のレイアウトです。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawSelectorOnTop="false" />
<TextView
android:id="@id/android:empty"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="No data">
</TextView>
</LinearLayout>
わかりました.. それで、main_tab.xml のレイアウトを変更し、table_header.xml と呼ばれる新しいレイアウトを作成しました。これには、名前、プレイ、勝った、負けたなどのリーグの見出しが含まれています...しかし、今、エラーが発生しましたlogcat ..以下はメインページのコードです...
if(a==1){
String xml = XMLfunctions.getXML_prem_table();
Document doc = XMLfunctions.XMLfromString(xml);
int numResults = XMLfunctions.numResults(doc);
if((numResults <= 0)){
Toast.makeText(tab_1.this, "League Table", Toast.LENGTH_LONG).show();
finish();
}
NodeList nodes = doc.getElementsByTagName("team");
setContentView(R.layout.table_header);
for (int i = 0; i < nodes.getLength(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element)nodes.item(i);
map.put("id", XMLfunctions.getValue(e, "id"));
map.put("name", "" + XMLfunctions.getValue(e, "name"));
map.put("played", "" + XMLfunctions.getValue(e, "played"));
map.put("won", "" + XMLfunctions.getValue(e, "won"));
map.put("drawn", "" + XMLfunctions.getValue(e, "drawn"));
map.put("lost", "" + XMLfunctions.getValue(e, "lost"));
map.put("points", "" + XMLfunctions.getValue(e, "points"));
mylist.add(map);
}
ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.main_tab,
new String[] { "name", "played", "won", "drawn", "lost", "points"},
new int[] { R.id.item_title, R.id.item_played, R.id.item_won,
R.id.item_drawn, R.id.item_lost, R.id.item_points});
setListAdapter(adapter);
final ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
@SuppressWarnings("unchecked")
HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position);
Toast.makeText(tab_1.this, o.get("name") + " have Won '" + o.get("won") + "' games, and are currently on '" + o.get("points") + "' points!", Toast.LENGTH_LONG).show();
}
});
私が使用したレイアウトを変更するための行は次のとおりです。 setContentView(R.layout.table_header);
これは正しいです????
私が得る最初のエラーは(長いリストがありますが、これが原因だと思います):
04-15 09:46:42.268: E/AndroidRuntime(346): java.lang.RuntimeException: アクティビティを開始できません ComponentInfo{com.julian.football_app/com.julian.football_app.tab_1}: java.lang.RuntimeException: あなたのコンテンツには、id 属性が「android.R.id.list」である ListView が必要です。