简体   繁体   English

从Android中的其他活动(非主要活动)调用自定义ListView时出错?

[英]Error calling a custom ListView from another activity (not main activity) in Android?

My MainActivity file does some other task. 我的MainActivity文件执行其他一些任务。 AccountInfo is used to generate my list. AccountInfo用于生成我的列表。

   public class AccountInfo extends Activity {
        TextView sublistHeadtext;
        ImageView sublistHeadImage;
        ListView listItem;
        String[] ItemViewNames;
        AccInfoCustomAdapter adapter;

        public ArrayList<String> CustomListViewValuesArr = new ArrayList<String>();

        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.sub_list);

            int value = getIntent().getExtras().getInt("listpoition");

            sublistHeadtext = (TextView) findViewById(R.id.ListItemtext);
            sublistHeadtext.setText("Account Information");

            sublistHeadImage = (ImageView) findViewById(R.id.ListItemimage);
            sublistHeadImage.setImageResource(R.drawable.accinfoimg);

            listItem = (ListView) findViewById(R.id.listItem);
            ItemViewNames = getResources().getStringArray(R.array.accInfoList);
            Log.wtf("AA", "executed !");

            /******** Take some data in Arraylist ( CustomListViewValuesArr ) ***********/
            setListData();

            /**************** Create Custom Adapter *********/
            adapter = new AccInfoCustomAdapter(CustomListViewValuesArr,
                    getBaseContext());

            //adapter = new AccInfoCustomAdapter(CustomListViewValuesArr,AccountInfo.this);
            Log.wtf("AA", "arrayList : "+CustomListViewValuesArr);
            listItem.setAdapter(adapter);
        }

        /****** Function to set data in ArrayList *************/
        public void setListData() {
            for (int i = 0; i < ItemViewNames.length; i++)
                CustomListViewValuesArr.add(ItemViewNames[i]);
        }

    }




AdatperFile 

public class AccInfoCustomAdapter extends BaseAdapter implements OnClickListener { 公共类AccInfoCustomAdapter扩展BaseAdapter实现OnClickListener {

    private ArrayList<String> list = new ArrayList<String>(); 
    private Context context; 



    public AccInfoCustomAdapter(ArrayList<String> list, Context context) { 
        this.list = list; 
        this.context = context; 
    } 

    @Override
    public int getCount() { 
        return list.size(); 
    } 

    @Override
    public Object getItem(int pos) { 
        return list.get(pos); 
    } 

    @Override
    public long getItemId(int pos) { 
       // return list.get(pos).getId();
        //just return 0 if your list items do not have an Id variable.
        return 0;
    } 

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (view == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
            view = inflater.inflate(R.layout.sublist_item, null);
        } 

        //Handle TextView and display string from your list
        TextView listItemText = (TextView)view.findViewById(R.id.ListItemtext); 
        listItemText.setText(list.get(position)); 

        //Handle buttons and add onClickListeners
        ImageButton nextBtn = (ImageButton)view.findViewById(R.id.ListItemimgbtn);


        nextBtn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) { 

                Toast.makeText(context, "position : "+position, Toast.LENGTH_LONG).show();
            }
        });

        return view; 
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

    } 
    }

I am getting a null pointer exception on line 我在线上得到一个空指针异常

listItem.setAdapter(adapter); listItem.setAdapter(适配器);

I think the error exists here 我认为这里存在错误

adapter = new AccInfoCustomAdapter (CustomListViewValuesArr, getBaseContext());

LOGCAT :- LOGCAT: -

02-18 18:16:46.170: E/AndroidRuntime(16303): FATAL EXCEPTION: main
02-18 18:16:46.170: E/AndroidRuntime(16303): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.xyzbank/com.example.xyzbank.AccountInfo}: java.lang.NullPointerException
02-18 18:16:46.170: E/AndroidRuntime(16303):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2060)
02-18 18:16:46.170: E/AndroidRuntime(16303):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2085)
02-18 18:16:46.170: E/AndroidRuntime(16303):    at android.app.ActivityThread.access$600(ActivityThread.java:130)
02-18 18:16:46.170: E/AndroidRuntime(16303):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
02-18 18:16:46.170: E/AndroidRuntime(16303):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-18 18:16:46.170: E/AndroidRuntime(16303):    at android.os.Looper.loop(Looper.java:137)
02-18 18:16:46.170: E/AndroidRuntime(16303):    at android.app.ActivityThread.main(ActivityThread.java:4747)
02-18 18:16:46.170: E/AndroidRuntime(16303):    at java.lang.reflect.Method.invokeNative(Native Method)
02-18 18:16:46.170: E/AndroidRuntime(16303):    at java.lang.reflect.Method.invoke(Method.java:511)
02-18 18:16:46.170: E/AndroidRuntime(16303):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
02-18 18:16:46.170: E/AndroidRuntime(16303):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-18 18:16:46.170: E/AndroidRuntime(16303):    at dalvik.system.NativeStart.main(Native Method)
02-18 18:16:46.170: E/AndroidRuntime(16303): Caused by: java.lang.NullPointerException
02-18 18:16:46.170: E/AndroidRuntime(16303):    at com.example.xyzbank.AccountInfo.onCreate(AccountInfo.java:45)
02-18 18:16:46.170: E/AndroidRuntime(16303):    at android.app.Activity.performCreate(Activity.java:5008)
02-18 18:16:46.170: E/AndroidRuntime(16303):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
02-18 18:16:46.170: E/AndroidRuntime(16303):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2024)
02-18 18:16:46.170: E/AndroidRuntime(16303):    ... 11 more

尝试将getBaseContext()更改为“this”。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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