当我试图从getter和setter类中获取值时,它将变为空。
在下面的代码中,请阅读我添加的注释,以获得解释。
我花了太多的时间在这上面而没有得到那里的问题…我被击中了!啊!
jst想要获取categoryID和文件,并将它们附加到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);
}
}
如果可能的话,请更新我的代码。
提前谢谢!!!
最佳答案
正如在另一个答案中指出的,有两个不同的变量,它们只在单个字母的情况下有所不同-siteslist vs siteslist。这在java中是有效的,但这是一个非常糟糕的主意。这已经让大多数回答者和你自己感到困惑。
从删除不想使用的名称开始,或者如果两者都需要的话,将其中一个名称重命名为一个更清晰的名称,我认为这将使您的问题变得更加清楚。
您在此处设置了siteslist(大写'l'):
SitesList sitesList = null;
在这里之前不要做任何其他事情:
String categoryid = sitesList.getcategoryid().get(position).toString();
它没有变成
null
,从来不是别的。现在,您还对另一个名为siteslist(小写'l')的对象执行了一些操作,这就是您产生混淆的地方。