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,
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.
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'"
si vous utilisez getListView (); assurez-vous que l'id de la liste cible est "list".