I am trying to make a custom adapter for listview. I've used ArrayList for storing objects of 'CustomListDataModel'
class. But when I set Image or textview resources in 'getView()'
Such as
viewHolder.image_view.setImageResources(customListDataModelArrayList.get(pos).getImage_id());
showing that getImage_id()
is 'cannot resolve'.
This is my problem. getImage_id()
method that I set as a getter in 'CustomListDataModel'
for specifying my problem clearly here is my code:
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;
}
}