简体   繁体   中英

How to display dynamic list which is coming in JSON format from server?

I know something I have written wrong here, I am trying to display multiline items dynamically from JSON but getting following exception,

01-22 11:18:27.814: E/AndroidRuntime(438): FATAL EXCEPTION: main
01-22 11:18:27.814: E/AndroidRuntime(438): java.lang.NullPointerException
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.nokia.item.MultiLineItem.createView(MultiLineItem.java:44)
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.nokia.view.ViewFactory.getView(ViewFactory.java:122)
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.nokia.view.DocumentList.createView(DocumentList.java:52)
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.nokia.view.ViewFactory.getContainer(ViewFactory.java:85)
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.nokia.controller.Controller.createDocument(Controller.java:415)
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.nokia.model.SublistChooser.checkNextListTemplate(SublistChooser.java:99)
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.nokia.model.SublistChooser.checkNextListTemplate(SublistChooser.java:96)
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.nokia.model.SublistChooser.start(SublistChooser.java:50)
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.nokia.controller.Controller.startDocument(Controller.java:387)
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.nokia.controller.Controller.startDocument(Controller.java:379)
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.nokia.action.ActionExecutor.executeTaskAction(ActionExecutor.java:445)
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.nokia.action.ActionExecutor.onAction(ActionExecutor.java:288)
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.nokia.action.Action.execute(Action.java:133)
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.nokia.view.PopupList$1.onClick(PopupList.java:72)
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:920)
01-22 11:18:27.814: E/AndroidRuntime(438):  at android.widget.AdapterView.performItemClick(AdapterView.java:282)
01-22 11:18:27.814: E/AndroidRuntime(438):  at android.widget.AbsListView.performItemClick(AbsListView.java:1037)
01-22 11:18:27.814: E/AndroidRuntime(438):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:2449)
01-22 11:18:27.814: E/AndroidRuntime(438):  at android.widget.AbsListView$1.run(AbsListView.java:3073)
01-22 11:18:27.814: E/AndroidRuntime(438):  at android.os.Handler.handleCallback(Handler.java:587)
01-22 11:18:27.814: E/AndroidRuntime(438):  at android.os.Handler.dispatchMessage(Handler.java:92)
01-22 11:18:27.814: E/AndroidRuntime(438):  at android.os.Looper.loop(Looper.java:132)
01-22 11:18:27.814: E/AndroidRuntime(438):  at android.app.ActivityThread.main(ActivityThread.java:4123)
01-22 11:18:27.814: E/AndroidRuntime(438):  at java.lang.reflect.Method.invokeNative(Native Method)
01-22 11:18:27.814: E/AndroidRuntime(438):  at java.lang.reflect.Method.invoke(Method.java:491)
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
01-22 11:18:27.814: E/AndroidRuntime(438):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
01-22 11:18:27.814: E/AndroidRuntime(438):  at dalvik.system.NativeStart.main(Native Method)
01-22 11:18:27.973: D/dalvikvm(438): GC_CONCURRENT freed 223K, 5% free 9758K/10247K, paused 9ms+27ms
01-22 11:18:34.123: I/Process(438): Sending signal. PID: 438 SIG: 9

This is the code I am getting NullPointerException , I don't know how to set view to List. View is returning Null but for normal TextFields its working file. Please post some helpful code.

import java.util.ArrayList;
import java.util.HashMap;

import org.json.JSONObject;

import android.view.View;
import android.widget.ListView;

import com.nokia.view.BaseScreen;
import com.nokia.view.BaseView;

public class MultiLineItem extends Item implements BaseView{

    private HashMap items;
    private  ArrayList list;
    public MultiLineItem(BaseScreen pview){
        super(pview);
        list= new ArrayList();
        items = new HashMap();
    }
    @Override
    public int getItemID() {
        // TODO Auto-generated method stub
        return 0;
    }
    @Override
    public String getValue() {
        // TODO Auto-generated method stub
        return null;
    }
    @Override
    public View getItem() {
        // TODO Auto-generated method stub
        return view;
    }
    public void createView(JSONObject definition) {
        String header=definition.optString("header");
        items.put("header", header);
        String text = definition.optString("text");
        items.put("text", text);
        list.add(items);
        //((ListView)view).addFocusables(list, LIST);
    }

    public ArrayList getList(){
        return list;
    }

There is a Widget for that in Android you have to use ListView for that. In ListView set the Adapter and in Adapter you have to send all the data you get from Json . Here is the example for doing that Android ListView Tutorial . This tutorial will give you idea how to use ListView in your Application.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM