2011-10-17 8 views
3

Je suis nouveau dans le développement android.je veux add listview dynamically .i suis capable d'ajouter le tableau statique mais quand je l'ai fait tableau dynamique je reçois erreur s'il vous plaît aider me.catName est diplay parfait dans le journal. Dans main.xml i ajouter un listview dans linerlayout Ceci est mon code-ajouter dynamiquement listview

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    System.setProperty("http.proxyHost","192.168.0.2"); 
    System.setProperty("http.proxyPort","8080"); 

    TextView Cat_id[]; 
    TextView Cat_Parentid[]; 
    TextView Cat_Name[]; 
    TextView Cat_Desc[]; 
    String str[]=new String[50]; 
    String[] temp=new String[50]; 
    TextView attribute[]; 
    ArrayAdapter adapter; 
    String lv_arr[]={"Android","iPhone","BlackBerry","AndroidPeople"}; 
    try 
    { 
     SAXParserFactory spf = SAXParserFactory.newInstance(); 
     SAXParser sp = spf.newSAXParser(); 
     XMLReader xr = sp.getXMLReader(); 

     URL sourceUrl = new URL("http://mobileecommerce.site247365.com/admin/catdata.xml"); 

     MyXMLHandler myXMLHandler = new MyXMLHandler(); 
     xr.setContentHandler(myXMLHandler); 
     xr.parse(new InputSource(sourceUrl.openStream())); 

    }catch(Exception e) 
    { 
     System.out.println("XML Pasing Excpetion = " + e); 
    } 

    sitesList = MyXMLHandler.sitesList; 

    Cat_id = new TextView[sitesList.getCat_id().size()]; 
    Cat_Parentid = new TextView[sitesList.getCat_id().size()]; 
    Cat_Name = new TextView[sitesList.getCat_id().size()]; 
    Cat_Desc=new TextView[sitesList.getCat_id().size()]; 
    String mystr,newstr; 

    for (int i = 0; i <sitesList.getCat_Name().size(); i++) 
    { 
     catNames=new String[sitesList.getCat_Name().size()]; 

     Cat_Name[i] = new TextView(this); 
     Cat_Name[i].setText("Cat_Name = "+sitesList.getCat_Name().get(i)); 
     catNames[i]=sitesList.getCat_Name().get(i); 
     Log.v("catnames",catNames[i]); 
     str[i]=sitesList.getCat_Desc().get(i); 
      temp[i]=str[i]; 

     } 

    setListAdapter(new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1,catNames)); 
    getListView().setTextFilterEnabled(true); 

    (this,android.R.layout.simple_list_item_1,catNames)); 

} 
static final String[] PENS = new String[]{ 
    "MONT Blanc", 
    "Gucci", 
    "Parker", 
    "Sailor", 
    "Porsche Design", 
    "Rotring", 
    "Sheaffer", 
    "Waterman" 
    }; 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    Object o = this.getListAdapter().getItem(position); 
    String pen = o.toString(); 
    Toast.makeText(this, "You have chosen ::" + " " + pen, Toast.LENGTH_LONG).show(); 
    } 

Mon journal Cat-

09-19 23:58:47.480: ERROR/AndroidRuntime(438): FATAL EXCEPTION: main 
09-19 23:58:47.480: ERROR/AndroidRuntime(438): java.lang.NullPointerException 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.widget.AbsListView.obtainView(AbsListView.java:1315) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.widget.ListView.makeAndAddView(ListView.java:1727) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.widget.ListView.fillDown(ListView.java:652) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.widget.ListView.fillFromTop(ListView.java:709) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.widget.ListView.layoutChildren(ListView.java:1580) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.widget.AbsListView.onLayout(AbsListView.java:1147) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.view.View.layout(View.java:7035) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.view.View.layout(View.java:7035) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1042) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.view.View.layout(View.java:7035) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.view.View.layout(View.java:7035) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1045) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.os.Looper.loop(Looper.java:123) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at java.lang.reflect.Method.invoke(Method.java:521) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
09-19 23:58:47.480: ERROR/AndroidRuntime(438):  at dalvik.system.NativeStart.main(Native Method) 

Merci et salutations

Arpit Trivedi

+0

mettez cette ligne en premier de la boucle for et retirez-la de la boucle for. catNames = new String [sitesList.getCat_Name(). taille()]; – user370305

+0

salut user370305 4 merci réponse.quand ligne je dois supprimer et j'initialiser catName juste avant pour la boucle – arpit

+0

catNames = new String [sitesList.getCat_Name(). Size()]; cette ligne a enlevé la forme pour la boucle et l'a initialisée avant pour la boucle(). et laissez-moi savoir ce qui se passe. – user370305

Répondre

0

Supprimer le ligne de pour() boucle

catNames=new String[sitesList.getCat_Name().size()]; 

et initialize it before for() loop.

et laissez-moi savoir ce qui se passe.

Questions connexes