覆盖列表视图的自定义适配器

时间:2015-06-10 07:39:37

标签: listview android-arrayadapter override

我是Android开发的新手。
我正在尝试为listView创建一个arrayAdapter。我希望我的listView包含一个图像和两个TextView。为此我已经覆盖了ArrayAdapter的构造函数,并且还覆盖了getView方法 每次我尝试运行它时,我的应用都会停止。我在代码中找不到错误。

public class main extends ActionBarActivity {

String[] frnds;
String[] depName;
int[] images = {R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e, R.drawable.f, R.drawable.g, R.drawable.h, R.drawable.i};
ListView lv;

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


    lv = (ListView) findViewById(R.id.listView1);

    Resources res = getResources();

    frnds = res.getStringArray(R.array.names);
    depName = res.getStringArray(R.array.description);

    customAdapter adapter = new customAdapter(this, frnds, depName, images);
    lv.setAdapter(adapter);

}
}


class customAdapter extends ArrayAdapter<String> {

Context context;
String[] name;
String[] description;
int[] imgs;

customAdapter(Context c, String[] names, String[] desc, int img[]) {
    super(c, R.layout.single_row, R.id.textView1, names);
    this.context = c;
    this.imgs = img;
    this.name = names;
    this.description = desc;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View row = inflater.inflate(R.layout.single_row, parent, false);

    TextView tv1 = (TextView) row.findViewById(R.id.textView1);
    TextView tv2 = (TextView) row.findViewById(R.id.textView2);
    ImageView iv = (ImageView) row.findViewById(R.id.imageView1);

    tv1.setText(name[position]);
    tv2.setText(description[position]);
    iv.setImageResource(imgs[position]);

    return row;
}
}

1 个答案:

答案 0 :(得分:0)

我遇到的问题是因为内存问题。
我尝试使用drawable文件夹中的图像,这需要占用大量空间,因为显示“内存不足”错误。
此外,覆盖getView的代码也不是一个有效的代码。

我正在尝试为此找到解决方案,并会尽力让您更新。