我正在尝试构建和运行应用程序,并在菜单列表适配器类上收到错误消息:
View Holder中的View Holder()不能为空。
这是我要使用Android Studio构建应用程序的Android代码
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.FrameLayout;
import android.widget.TextView;
import java.util.ArrayList;
import com.weather.queensland.weather.pojo.MenuListPojo;
public class MenuListAdapter extends ArrayAdapter<MenuListPojo>
{
Activity activity;
private ArrayList<MenuListPojo> dataSet;
private int lastPosition = -1;
@SuppressLint("ResourceType")
public MenuListAdapter(ArrayList<MenuListPojo> paramArrayList, Activity paramActivity)
{
super(paramActivity, 2131296289, paramArrayList);
this.dataSet = paramArrayList;
this.activity = paramActivity;
}
@SuppressLint("ResourceType")
public View getView(int paramInt, View paramView, ViewGroup paramViewGroup)
{
MenuListPojo localMenuListPojo = (MenuListPojo)getItem(paramInt);
ViewHolder localViewHolder;
if (paramView == null)
{
localViewHolder = new ViewHolder(null);
paramView = LayoutInflater.from(getContext()).inflate(2131296289, paramViewGroup, false);
localViewHolder.nav_new_title = ((TextView)paramView.findViewById(2131165332));
localViewHolder.nav_new = ((FrameLayout)paramView.findViewById(2131165321));
paramView.setTag(localViewHolder);
}
for (paramViewGroup = localViewHolder;; paramViewGroup = (ViewHolder)paramView.getTag())
{
this.lastPosition = paramInt;
paramViewGroup.nav_new_title.setText(localMenuListPojo.getTitle());
paramViewGroup.nav_new.setOnClickListener(new View.OnClickListener()
{
public void onClick(View paramAnonymousView)
{
int i = ((Integer)paramAnonymousView.getTag()).intValue();
paramAnonymousView = (MenuListPojo)MenuListAdapter.this.getItem(i);
((ForecastWeatherActivity)MenuListAdapter.this.activity).callOnMenuItemSelection(paramAnonymousView.getLink());
}
});
paramViewGroup.nav_new.setTag(Integer.valueOf(paramInt));
return paramView;
}
}
private static class ViewHolder
{
FrameLayout nav_new;
TextView nav_new_title;
}
}
答案 0 :(得分:0)
在您的getView()
函数中,您的视图持有者默认构造函数应类似于
localViewHolder = new ViewHolder();
不是这个
localViewHolder = new ViewHolder(null);
将其设置为parameterized constructor
,而您将其作为参数值null