Проблемы с макетом

Я пытаюсь создать таблицу лиги с фиксированным заголовком... Я уже писал ранее и получил совет, но у меня все еще есть некоторые проблемы! Я уверен, что это только незначительная проблема, которая вызывает у меня мои проблемы!!!

Ниже приведен код для главной страницы:

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");
            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);

Я предполагаю, что я не называю это должным образом.. это правильное предположение????

Ниже приведены макеты:

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>

tableheader.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/table_header">
    <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>
  </TableLayout>

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:drawSelectorOnTop="false" />
   </LinearLayout>

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/table">
    <TableRow>
        <TextView  
            android:text=""
            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>

Спасибо за помощь!!!

1 ответ

Во-первых, вы не должны изменять файл макета (SetContentView()), как это, и ошибка, которую вы делаете, заключается в том, что вы объявляете id в других файлах: @+id/list, где в этом файле listplaceholder.xml есть @+id/android: список, поэтому, естественно, это вызовет ошибку, поэтому сначала сделайте оба идентификатора с одинаковыми именами. Наконец, я не советую использовать два макета XML-файла для сохранения активности, вы должны использовать только один XML-файл для отображения активности.

Другие вопросы по тегам