web-dev-qa-db-fra.com

Android: votre contenu doit avoir un ListView dont l'attribut id est Android.R.id.list

Je reçois cette erreur d’exécution et j’ai vraiment du mal à aller au fond des choses: "Votre contenu doit avoir une ListView dont l’attribut id est Android.R.id.list".

Voici mon code:

public class ShowAllJobsInArea extends ListActivity{

    Context context;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.show_jobs_in_area);
        context=getApplicationContext();

        String area=Cookie.getAreaSelected();

        final ProgressBar thinger=(ProgressBar) findViewById(R.id.progressBar2);
        TabHost tabHost=(TabHost)findViewById(Android.R.id.tabhost);
        tabHost.setup();

        TabSpec spec1=tabHost.newTabSpec("Tab 1");
        spec1.setContent(R.id.tab1);
        spec1.setIndicator("Starting");

        TabSpec spec2=tabHost.newTabSpec("Tab 2");
        spec2.setContent(R.id.tab2);
        spec2.setIndicator("# Days");        

        TabSpec spec3=tabHost.newTabSpec("Tab 3");
        spec3.setContent(R.id.tab3);
        spec3.setIndicator("Rate");


        tabHost.addTab(spec1);
        tabHost.addTab(spec2);
        tabHost.addTab(spec3);

        Handler handler = new Handler() {
             public void handleMessage(Message message) {
                  switch (message.what) {
                      case HttpConnection.DID_START:
                          thinger.setVisibility(View.VISIBLE);
                          break;
                      case HttpConnection.DID_SUCCEED:
                          String response = (String) message.obj;
                          Log.i("EOH",response);

                          ArrayList<String> startDates=new ArrayList<String>();
                          ArrayList<String> ns=new ArrayList<String>();
                          ArrayList<String> rates=new ArrayList<String>();
                          HashMap<String, JSONObject> countyObjs=new HashMap<String, JSONObject>();

                          JSONObject object = null;
                          try {
                              object = (JSONObject) new JSONTokener(response).nextValue();

                              for(int i=0;i<object.length();i++){
                                  String area="";
                                  String endDate="";
                                  String endTimes="";
                                  String id="";
                                  String startDate="";
                                  String startTimes="";
                                  String rate="";
                                  String alreadyApplied="";
                                  String n="";
                                  JSONObject countyObj=object.getJSONObject(String.valueOf(i));
                                  countyObjs.put(id, countyObj);

                                  area=countyObj.getString("area");
                                  endDate=countyObj.getString("endDate");
                                  endTimes=countyObj.getString("endTimes");
                                  id=countyObj.getString("id");
                                  startDate=countyObj.getString("startDate");
                                  startTimes=countyObj.getString("startTimes");
                                  rate=(countyObj.getString("rates").split(","))[0];
                                  alreadyApplied=countyObj.getString("alreadyApplied");
                                  n=countyObj.getString("n");

                                  startDates.add(startDate+","+id);
                                  ns.add(n+","+id);
                                  rates.add(rate+","+id);
                              }
                          }catch (JSONException e) {
                              e.printStackTrace();
                          }

                          Collections.sort(startDates);
                          Collections.sort(ns);
                          Collections.sort(rates);                    

                          String[] startDates_str = new String[startDates.size()];
                          startDates.toArray(startDates_str);

                          setListAdapter(new ArrayAdapter<String>(getApplicationContext(), R.layout.list_item, startDates_str));
                          //setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES));
                          ListView lv = getListView();
                          lv.setTextFilterEnabled(true);



                          thinger.setVisibility(View.INVISIBLE);

                          break;
                      case HttpConnection.DID_ERROR:
                          thinger.setVisibility(View.INVISIBLE);
                          break;
                      default:
                          break;
                  }
             }
        };

        List<NameValuePair> params = new ArrayList<NameValuePair>(1);
        params.add(new BasicNameValuePair("area", area)); 
        new HttpConnection(handler).post("http://www.xlhi.com/ajax/getJobsInArea.php",params);
    }
}

show_jobs_in_area.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:Android="http://schemas.Android.com/apk/res/Android"
  Android:orientation="vertical"
  Android:layout_width="match_parent"
  Android:layout_height="match_parent">
    <TabHost Android:id="@Android:id/tabhost" Android:layout_width="match_parent" Android:layout_height="match_parent">
        <LinearLayout Android:id="@+id/linearLayout1" Android:layout_width="match_parent" Android:layout_height="match_parent" Android:orientation="vertical">
            <TabWidget Android:layout_width="match_parent" Android:layout_height="wrap_content" Android:id="@Android:id/tabs"></TabWidget>
            <FrameLayout Android:layout_width="match_parent" Android:layout_height="match_parent" Android:id="@Android:id/tabcontent">
                <LinearLayout Android:layout_width="match_parent" Android:layout_height="match_parent" Android:id="@+id/tab1" Android:orientation="vertical">
                    <ProgressBar Android:id="@+id/progressBar2" Android:layout_height="wrap_content" style="?android:attr/progressBarStyleLarge" Android:layout_width="wrap_content" Android:layout_gravity="center_horizontal" Android:layout_marginTop="25dip"></ProgressBar>
                    <ListView Android:id="@+id/listView1" Android:layout_height="wrap_content" Android:layout_width="match_parent"></ListView>
                </LinearLayout>
                <LinearLayout Android:layout_width="match_parent" Android:layout_height="match_parent" Android:id="@+id/tab2"></LinearLayout>
                    <ListView Android:id="@+id/listView2" Android:layout_height="wrap_content" Android:layout_width="match_parent">
                </ListView>
                <LinearLayout Android:layout_width="match_parent" Android:layout_height="match_parent" Android:id="@+id/tab3">
                    <ListView Android:id="@+id/listView3" Android:layout_height="wrap_content" Android:layout_width="match_parent"></ListView>
                </LinearLayout>
            </FrameLayout>
        </LinearLayout>
    </TabHost>
</LinearLayout>

list_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<TextView 
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:padding="10dp"
    Android:textSize="16sp" >
</TextView>

J'ai essayé de changer l'id sur Android.id = "@ Android: id/list" sans succès - toujours la même erreur. Je pensais que cela avait quelque chose à voir avec la requête asynchrone que je fais ... Je suis vraiment bloqué maintenant et j'espère que quelqu'un pourra vous aider.

Merci d'avance,

25
Eamorr

Si vous avez plus d'une ListView dans votre présentation, vous ne devriez pas étendre ListActivity mais plutôt étendre Activity et manipuler vous-même ListViews

ListView list1 = (ListView) findViewById(R.id.myList1);
list1.setAdapter(...);

ListView list2 = (ListView) findViewById(R.id.myList2);
list2.setAdapter(...);

ListActivity est une classe d'assistance simplifiée qui vous simplifie la vie lorsque vous travaillez avec une seule ListView dans votre présentation.

59
Karl-Bjørnar Øie

Dans vous show_jobs_in_area.xml un des id de la liste à:

Voici un bon exemple Erreur dans Listview: "Votre contenu doit avoir un ListView dont l'attribut id est 'Android.R.id.list'"

1
Mathayo

si vous utilisez getListView (); assurez-vous que l'id de la liste cible est "list". 

0
user2814778