从类中获取值时的空指针异常

时间:2011-12-01 07:45:01

标签: android listview

当我尝试从中获取值时,getter和setter类变为NULL。 在下面的代码中,plz阅读评论,我补充说,为解释。 我花了太多时间在上面而没有弄到那里的问题......我很震惊! 我想获取CategoryID和File并将它们附加到URL以在ListView的每一行上显示缩略图。 我做了很多次改变但没有工作......

public class MySimpleArrayAdapter extends ArrayAdapter<String>
{

////** Create Object For SiteList Class */
SitesList sitesList = null;   //////// This is my Custom SitesList Class that contains ArrayLists

public Context context;
public ArrayList<String> siteslist;

public MySimpleArrayAdapter(Context context, ArrayList<String> siteslist)
{
    super(context, R.layout.row, R.id.tv_label, siteslist);
    this.context = context;
    this.siteslist = siteslist;   //////// Uptill here, the Siteslist is picking all desired values and storing in it
}

public View getView(int position, View convertView ,ViewGroup parent)
{
    View v = convertView;

    if(v == null)
    {
        LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v= inflator.inflate(R.layout.row, null);
    }

    TextView tv_name = (TextView) v.findViewById(R.id.tv_label);
    tv_name.setText(siteslist.get(position));

    ImageView thumbnail = (ImageView) v.findViewById(R.id.iv_left);

    //////// But here the sitesList becomes **NULL**
String categoryid = sitesList.getcategoryid().get(position).toString();   

    final String url = "http://dev.takkekort.no/page/designer/masks/" + categoryid +"/front/landscape/" + file ;

////////////// I want to use the above String url in the GetImage Class below to fetch each image and show it as a thumbnail in the listview.

    new GetImage(url).execute(thumbnail);

    return v;
}
}

这是我的SitesList类,其中包含getter和setter方法

/** Contains getter and setter method for varialbles */
public class SitesList
{

    /** Variables */
    public ArrayList<String> categoryid = new ArrayList<String>();

    /**
     * In Setter method default it will return arraylist change that to add
     */

    public ArrayList<String> getcategoryid()    ////////// Category ID
    {
        return categoryid;
    }

    public void setcategoryid(String categoryid)
    {
        this.categoryid.add(categoryid);
    }

}

请尽可能更新我的代码。

提前致谢!!!

4 个答案:

答案 0 :(得分:2)

正如另一个答案中所指出的,你有两个不同的变量,只有一个字母的情况不同 - sitesList vs siteslist。这在Java中是有效的,但是一个非常糟糕的主意。它已经让大多数回答者和你自己感到困惑。

首先删除您不想使用的那个,或者,如果两者都需要,请将其中一个重命名为更明确的名称,我认为它会更清楚您的问题所在。< / p>

您可以在此设置sitesList(大写&#39; L&#39;):

SitesList sitesList = null;

在此之前不要做任何其他事情:

String categoryid = sitesList.getcategoryid().get(position).toString(); 

它没有成为null,它绝不是别的。现在你也在用另一个名为siteslist的对象做一些事情(小写&#39; L&#39;),这是你发生混乱的地方。

答案 1 :(得分:1)

siteList null尝试在之前对其进行初始化:

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

答案 2 :(得分:1)

巴迪,这有效吗?

SitesList sitesList = null;   
public ArrayList<String> siteslist;

两个变量的名称相同吗?

你制造了两个含糊不清的变量......不是很好。 其中一个是NULL

答案 3 :(得分:1)

是sitelist还是sitesList.getcategoryid()。变为NULL?

编辑: 问题是你有两个变量siteslist和sites * L * ist。

您尚未为网站* L * ist设置任何值,因此它仍为NULL。不要使用这样的变量名。 :o