使用Adapter和viewHolder发生问题(崩溃)

时间:2016-06-28 15:05:28

标签: java android android-bitmap android-viewholder

我是java和Android的新手,我现在被卡住了。我的目标是做一个菜单来探索目录。我刚刚完成了第一部分,但是当我启动它时应用程序崩溃了。我认为由于这些图片,我认为我并不了解一切。 这是我的源代码:

    public class MainActivity extends AppCompatActivity {
    private Bitmap[] tabImg = {
            BitmapFactory.decodeResource(getResources(), R.drawable.powerload),
            BitmapFactory.decodeResource(getResources(), R.drawable.striplineattenuator),
            BitmapFactory.decodeResource(getResources(), R.drawable.smd_resistor),
            BitmapFactory.decodeResource(getResources(), R.drawable.uhf),
            BitmapFactory.decodeResource(getResources(), R.drawable.impedancematcher),
    };
    ListView mListView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mListView = (ListView) findViewById(R.id.listView);
        List<Produit> produit = genererProduit();
        ProduitAdapter adapter = new ProduitAdapter(MainActivity.this, produit);
        mListView.setAdapter((ListAdapter) adapter);
    }

    private List<Produit> genererProduit() {
        List<Produit> produit = new ArrayList<Produit>();
        produit.add(new Produit("aaa", "L'intégralité des xxx", tabImg[1]));
        produit.add(new Produit("bbb", "L'intégralité des xxx",tabImg[2]));
        produit.add(new Produit("ccc", "L'intégralité des xxx",tabImg[3]));
        produit.add(new Produit("ddd", "L'intégralité des xxx",tabImg[4]));
        produit.add(new Produit("eee", "Tous les autres produits xxx",tabImg[5]));
        return produit;
    }
}

-----------------------------------

public class Produit {
    private String nom;
    private String codeProduit;
    private Bitmap image;

    public Produit(String nom, String codeProduit,Bitmap image) {
        this.nom = nom;
        this.codeProduit = codeProduit;
        this.image = image;
    }

    public String getNom() {
        return nom;
    }

    public String getCodeProduit() {
        return codeProduit;
    }

    public Bitmap getImage() {
        return image;
    }

    public void setNom(String nom) {
        this.nom = nom;
    }

    public void setSurname(String codeProduit) {
        this.codeProduit = codeProduit;
    }

    public void setImage(Bitmap image) {
        this.image = image;
    }
}
------------------------------------------------------------------
public class ProduitAdapter extends ArrayAdapter<Produit> {
    //tweets est la liste des models à afficher
    public ProduitAdapter(Context context, List<Produit> produit) {
        super(context, 0, produit);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.rowlayout, parent, false);
        }

        ViewHolder viewHolder = (ViewHolder) convertView.getTag();
        if (viewHolder == null) {
            viewHolder = new ViewHolder();
            viewHolder.nom = (TextView) convertView.findViewById(R.id.nom);
            viewHolder.codeProduit = (TextView) convertView.findViewById(R.id.codeProduit);
            viewHolder.image = (ImageView) convertView.findViewById(R.id.image);
            convertView.setTag(viewHolder);
        }
        else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        Produit produit = getItem(position);

        //il ne reste plus qu'à remplir notre vue
        viewHolder.nom.setText(produit.getNom());
        viewHolder.codeProduit.setText(produit.getCodeProduit());
        viewHolder.image.setImageBitmap(produit.getImage());

        return convertView;
    }
}

    public class ViewHolder {
    public TextView nom;
    public TextView codeProduit;
    public ImageView image;
}

欢迎任何帮助,我非常肯定这是一个愚蠢的事情,但我再次对此我很陌生。感谢您的帮助和建议! Seedbarrett

0 个答案:

没有答案