2017-05-03 55 views
0

我想创建这个UI。如何在Android中的自定义ListView中添加图像?

Work

在此的ListView,有4个变化每列表用品 -

1)特别优惠(图像视图) 2)名称(TextView的) 3)CompanyLogo的(ImageView的) 4 )功能(TextView)

我想仅在第一个列表项中显示特殊优惠图像视图,并在每个列表项中更改名称,公司徽标和特征。

如果我使用R.drawable.img1而不是错误更改模型字符串的Signature到图像View的int中,并且还会在setImageResource行中获取错误。 你能告诉我我该放什么“?”在Models.add()行?

我已经这样做了。

主要Activity.java

public class MainActivity extends AppCompatActivity { 
private static CustomAdapter adapter; 
ArrayList<Model> Models; 
ListView listView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    listView = (ListView) findViewById(R.id.ls); 
    Models = new ArrayList<>(); 
    Models.add(new Model("?", "PP AUTOMATIVES", "?", "Authorized")); 
    Models.add(new Model("?", "CAR CARE MOTOR", "?", "MutliBrand")); 
    Models.add(new Model("?", "CAR CARE MOTOR", "?", "MutliBrand")); 
    Models.add(new Model("?", "CAR CARE MOTOR", "?", "MutliBrand")); 
    adapter = new CustomAdapter(Models, getApplicationContext()); 
    listView.setAdapter(adapter); 
} 
} 

CustomAdapter.java

public class CustomAdapter extends ArrayAdapter<Model> { 

Context mContext; 
private ArrayList<Model> dataSet; 

public CustomAdapter(ArrayList<Model> data, Context context) { 
    super(context, R.layout.row_layout, data); 
    this.dataSet = data; 
    this.mContext = context; 

} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    Model dataModel = getItem(position); 
    ViewHolder viewHolder; 
    if (convertView == null) { 
     viewHolder = new ViewHolder(); 
     LayoutInflater inflater = LayoutInflater.from(getContext()); 
     convertView = inflater.inflate(R.layout.row_layout, parent, false); 
     viewHolder.txtName = (ImageView) convertView.findViewById(R.id.name); 
     viewHolder.txtType = (TextView) convertView.findViewById(R.id.type); 
     viewHolder.txtVersion = (ImageView) convertView.findViewById(R.id.version_number); 
     viewHolder.info = (TextView) convertView.findViewById(R.id.feature); 
     convertView.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 

    } 
    viewHolder.txtName.setImageResource((dataModel.getName())); 
    viewHolder.txtType.setText(dataModel.getSpecialoffer()); 
    viewHolder.txtVersion.setImageResource(((dataModel.getCompanylogo()))); 
    viewHolder.info.setText(dataModel.getFeature()); 
    return convertView; 
} 

private static class ViewHolder { 
    ImageView txtName; 
    TextView txtType; 
    ImageView txtVersion; 
    TextView info; 
} 
} 

Model.java

public class Model { 
String specialoffer; 
String name; 
String companylogo; 
String feature; 

public Model(String specialoffer, String name, String companylogo, String feature) { 
    this.specialoffer = specialoffer; 
    this.name = name; 
    this.companylogo = companylogo; 
    this.feature = feature; 
} 

public String getSpecialoffer() { 
    return specialoffer; 
} 

public void setSpecialoffer(String specialoffer) { 
    this.specialoffer = specialoffer; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getCompanylogo() { 
    return companylogo; 
} 

public void setCompanylogo(String companylogo) { 
    this.companylogo = companylogo; 
} 

public String getFeature() { 
    return feature; 
} 

public void setFeature(String feature) { 
    this.feature = feature; 
} 
} 

回答

1

如果你有你的图像的URL。然后添加字符串模式,并运用毕加索

Picasso. 
    with(context). 
    load(imageurl). 
    into(imageview); 

如果你想用你的可绘制,那么你和使用setImageResource(INT)

模型(整型,字符串,字符串,字符串)

Model.class 
    Models.add(new Model(R.drawable.abc, "PP AUTOMATIVES", "?", "Authorized")); 

    Adapter.class 
    viewHolder.txtName.setImageResource((dataModel.getName())); 
+0

我想使用我的drawable.How我可以使用setImageResource?请你给我发送代码。 –

+0

我想在第一个列表中显示“abc”图像。在下一个列表项目中,我不想使用任何图像。您可以检查我的UI。我不想在下一个列表中使用优惠形象。如何添加Models.add中的数据(new Model())用于第一项空白并使用其他3个不同的项目? –

相关问题