android android-activity listactivity

Android: su contenido debe tener un ListView cuyo id es el atributo android.R.id.list



android-activity listactivity (3)

Obtengo este error en tiempo de ejecución y realmente estoy luchando por llegar al fondo del asunto: "Tu contenido debe tener un ListView cuyo ID es android.R.id.list".

Aquí está mi código:

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>

Intenté cambiar la identificación a android.id = "@ android: id / list" en vano, obteniendo el mismo error. Estaba pensando que era algo relacionado con la solicitud asíncrona que estoy haciendo ... Estoy realmente atrapado ahora y espero que alguien pueda ayudar.

Muchas gracias de antemano,



Si tiene más de un ListView en su diseño, no debe extender ListActivity sino extender Activity y manejar ListViews usted mismo;

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

ListActivity es una clase abreviada de ayuda que facilita la vida cuando trabajas con solo un ListView en tu diseño.


si usa getListView (); asegúrese de que la ID de la lista de objetivos sea "lista".