【问题标题】:How to add image in Custom ListView in android?如何在 android 的自定义 ListView 中添加图像?
【发布时间】:2017-05-03 20:14:29
【问题描述】:

我想创建这个用户界面。

Work

在这个ListView中,每个列表项有4个变化-

1)特别优惠(图片查看) 2)名称(文本视图) 3)公司标志(ImageView) 4)特征(TextView)

我只想在第一个列表项中显示特价图片视图,并更改每个列表项中的名称、公司徽标、功能。

如果我使用 R.drawable.img1 而不是错误将模型字符串的签名更改为 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;
}
}

模型.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;
}
}

【问题讨论】:

    标签: android listview


    【解决方案1】:

    如果你有你的图片网址。然后将字符串添加到模型并使用毕加索

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

    如果你想使用你的drawables然后你使用setImageResource(int)

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

        Model.class
        Models.add(new Model(R.drawable.abc, "PP AUTOMATIVES", "?", "Authorized"));
    
        Adapter.class
        viewHolder.txtName.setImageResource((dataModel.getName()));
    

    【讨论】:

    • 我想使用我的drawable。如何使用setImageResource?请给我代码。
    • 我只想在第一个列表中显示“abc”图像。在下一个列表项中我不想使用任何图像。您可以查看我的 UI。我不想使用优惠图像在下一个列表中。如何在 Models.add(new Model()) 中为第一项空白添加数据并使用其他 3 个不同的项?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多