gpt4 book ai didi

java - 无法解析方法 'getImage_id()'

转载 作者:行者123 更新时间:2023-12-02 06:09:54 25 4
gpt4 key购买 nike

我正在尝试为listview制作一个自定义适配器。我使用 ArrayList 来存储 'CustomListDataModel' 类的对象。但是当我在 'getView()' 中设置 Image 或 textview 资源时,如

viewHolder.image_view.setImageResources(customListDataModelArrayList.get(pos).getImage_id());

显示getImage_id()“无法解析”。这是我的问题。我在 'CustomListDataModel' 中设置为 getter 的 getImage_id() 方法,用于清楚地指定我的问题,这是我的代码:

 public class MainActivity extends AppCompatActivity {

ListView list_view;
CustomListAdapter customListAdapter;
ArrayList <CustomListDataModel> customListDataModelArrayList =new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PopulateData();
initView();
}

public void initView(){
list_view = (ListView) findViewById(R.id.list_view);
customListAdapter = new CustomListAdapter(MainActivity.this, customListDataModelArrayList);
list_view.setAdapter(customListAdapter);
}

public void PopulateData(){

for (int i=0;i<10;i++){

CustomListDataModel customListDataModel = new CustomListDataModel();
switch (i)
{
case 0:
customListDataModel.setImageName("Angry Bird Red");
customListDataModel.setImage_id(R.drawable.angry_bird);
customListDataModel.setImageDiscription("Angry Bird is red in color");
break;

case 1:
customListDataModel.setImageName("Angry Bird Black");
customListDataModel.setImage_id(R.drawable.angry_bird);
customListDataModel.setImageDiscription("Angry Bird is black in color");
break;

case 2:
customListDataModel.setImageName("Angry Bird Blue");
customListDataModel.setImage_id(R.drawable.angry_bird);
customListDataModel.setImageDiscription("Angry Bird is blue in color");
break;

case 3:
customListDataModel.setImageName("Angry Bird Red");
customListDataModel.setImage_id(R.drawable.angry_bird);
customListDataModel.setImageDiscription("Angry Bird is red in color");
break;

case 4:
customListDataModel.setImageName("Angry Bird Black");
customListDataModel.setImage_id(R.drawable.angry_bird);
customListDataModel.setImageDiscription("Angry Bird is black in color");
break;
case 5:
customListDataModel.setImageName("Angry Bird Blue");
customListDataModel.setImage_id(R.drawable.angry_bird);
customListDataModel.setImageDiscription("Angry Bird is blue in color");
break;

case 6:
customListDataModel.setImageName("Angry Bird Green");
customListDataModel.setImage_id(R.drawable.angry_bird);
customListDataModel.setImageDiscription("Angry Bird is green in color");
break;

case 7:
customListDataModel.setImageName("Angry Bird Yellow");
customListDataModel.setImage_id(R.drawable.angry_bird);
customListDataModel.setImageDiscription("Angry Bird is yellow in color");
break;

case 8:
customListDataModel.setImageName("Angry Bird White");
customListDataModel.setImage_id(R.drawable.angry_bird);
customListDataModel.setImageDiscription("Angry Bird is white in color");
break;

case 9:
customListDataModel.setImageName("Angry Bird Red");
customListDataModel.setImage_id(R.drawable.angry_bird);
customListDataModel.setImageDiscription("Angry Bird is white in color");
break;
}
customListDataModelArrayList.add(customListDataModel);

}

}
}


public class CustomListDataModel {
private String ImageName="";
private String ImageDiscription;
private int Image_id;

public String getImageName() {
return ImageName;
}

public void setImageName(String imageName) {
ImageName = imageName;
}

public String getImageDiscription() {
return ImageDiscription;
}

public void setImageDiscription(String imageDiscription) {
ImageDiscription = imageDiscription;
}

public int getImage_id() {
return Image_id;
}

public void setImage_id(int image_id) {
Image_id = image_id;
}


}

public class CustomListAdapter extends BaseAdapter{

Activity activity;
ArrayList customListDataModelArrayList = new ArrayList<>();
LayoutInflater layoutInflater = null;

public CustomListAdapter(Activity activity, ArrayList customListDataModelArrayList){
this.activity=activity;
this.customListDataModelArrayList = customListDataModelArrayList;
layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}


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

@Override
public Object getItem(int i) {
return customListDataModelArrayList.get(i);
}

@Override
public long getItemId(int i) {
return i;
}

public static class ViewHolder{
ImageView image_view;
TextView tv_name,tv_discription;

}
ViewHolder viewHolder = null;


// this method is called each time for arraylist data size.
@Override
public View getView(int position, View view, ViewGroup viewGroup) {


View vi=view;
final int pos = position;
if(vi == null){

// create viewholder object for list_rowcell View.
viewHolder = new ViewHolder();

vi = layoutInflater.inflate(R.layout.list_rowcell,null);
viewHolder.image_view = (ImageView) vi.findViewById(R.id.image_view);
viewHolder.tv_name = (TextView) vi.findViewById(R.id.tv_name);
viewHolder.tv_discription = (TextView) vi.findViewById(R.id.tv_discription);

vi.setTag(viewHolder);
}else {


viewHolder= (ViewHolder) vi.getTag();
}

viewHolder.image_view.setImageResource(customListDataModelArrayList.get(pos).getImage_id());
viewHolder.tv_name.setText(customListDataModelArrayList.get(pos).getImageName());
viewHolder.tv_discription.setText(customListDataModelArrayList.get(pos).getImageDiscription());


return vi;
}
}

最佳答案

在 CustomListAdapter 中,您应该声明 ArrayList 的类型,以便可以访问项目方法。

 ArrayList<CustomListDataModel> customListDataModelArrayList;

或者您可以使用向下转换来解决该问题

((CustomListDataModel)customListDataModelArrayList.get(pos)).getImage_id();


关于java - 无法解析方法 'getImage_id()',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55917583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com