如何在列表视图中设置ImageResource?
how to setImageResource in listview?
我在 sqlite 中存储图像名称,我通过查询获取名称并且我需要设置图像资源。
我试试这个:
ImageView img_categlist = (ImageView) findViewById(R.id.img_categlist);
int imageid = getResources().getIdentifier(Image[position], "drawable", getApplicationContext().getPackageName());
img_categlist.setImageResource(imageid);
int save = db.sh_categtest("charterdb", "test");
Image = new String [save];
for (int i = 0; i <save; i++) {
Image[i]= db.nam_nametest("charterdb", "test", i, 15);
}
但是它不起作用,我该怎么办?
(图像是可绘制的,我只是将名称存储在 sqlite 中)
完整代码:
public class Barayetest extends ListActivity {
private database db;
private String[] Name;
private String[] Price;
private String[] Image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_barayetest);
db = new database(this);
refresher();
setListAdapter(new AA());
}
class AA extends ArrayAdapter<String>{
public AA() {
super(Barayetest.this, R.layout.categ_item, Name);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater in = getLayoutInflater();
View row = in.inflate(R.layout.categ_item, parent, false);
TextView txt_cat = (TextView) row.findViewById(R.id.txt_cat);
txt_cat.setText(Name [position]);
TextView txt_numb = (TextView) row.findViewById(R.id.txt_numb);
txt_numb.setText(String.valueOf(position+1));
TextView txt_price = (TextView) row.findViewById(R.id.txt_price);
txt_price.setText(Price [position]);
int imageid = getResources().getIdentifier(Image[position], "drawable", getApplicationContext().getPackageName());
ImageView img_categlist = (ImageView) findViewById(R.id.img_categlist);
img_categlist.setImageResource(imageid);
return (row);
}
}
private void refresher(){
db.open();
int save = db.sh_categtest("charterdb", "test");
Name = new String [save];
Price = new String [save];
Image = new String [save];
for (int i = 0; i <save; i++) {
Name[i]= db.nam_nametest("charterdb", "test", i, 2);
Price[i]= db.nam_nametest("charterdb", "test", i, 7);
Image[i]= db.nam_nametest("charterdb", "test", i, 15);
}
db.close();
}
}
更新:
更新代码后,您必须从视图行 中获取 ImageView。所以像这样使用,
ImageView img_categlist = (ImageView) row.findViewById(R.id.img_categlist);
img_categlist.setImageResource(imageid);
我在 sqlite 中存储图像名称,我通过查询获取名称并且我需要设置图像资源。 我试试这个:
ImageView img_categlist = (ImageView) findViewById(R.id.img_categlist);
int imageid = getResources().getIdentifier(Image[position], "drawable", getApplicationContext().getPackageName());
img_categlist.setImageResource(imageid);
int save = db.sh_categtest("charterdb", "test");
Image = new String [save];
for (int i = 0; i <save; i++) {
Image[i]= db.nam_nametest("charterdb", "test", i, 15);
}
但是它不起作用,我该怎么办? (图像是可绘制的,我只是将名称存储在 sqlite 中)
完整代码:
public class Barayetest extends ListActivity {
private database db;
private String[] Name;
private String[] Price;
private String[] Image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_barayetest);
db = new database(this);
refresher();
setListAdapter(new AA());
}
class AA extends ArrayAdapter<String>{
public AA() {
super(Barayetest.this, R.layout.categ_item, Name);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater in = getLayoutInflater();
View row = in.inflate(R.layout.categ_item, parent, false);
TextView txt_cat = (TextView) row.findViewById(R.id.txt_cat);
txt_cat.setText(Name [position]);
TextView txt_numb = (TextView) row.findViewById(R.id.txt_numb);
txt_numb.setText(String.valueOf(position+1));
TextView txt_price = (TextView) row.findViewById(R.id.txt_price);
txt_price.setText(Price [position]);
int imageid = getResources().getIdentifier(Image[position], "drawable", getApplicationContext().getPackageName());
ImageView img_categlist = (ImageView) findViewById(R.id.img_categlist);
img_categlist.setImageResource(imageid);
return (row);
}
}
private void refresher(){
db.open();
int save = db.sh_categtest("charterdb", "test");
Name = new String [save];
Price = new String [save];
Image = new String [save];
for (int i = 0; i <save; i++) {
Name[i]= db.nam_nametest("charterdb", "test", i, 2);
Price[i]= db.nam_nametest("charterdb", "test", i, 7);
Image[i]= db.nam_nametest("charterdb", "test", i, 15);
}
db.close();
}
}
更新: 更新代码后,您必须从视图行 中获取 ImageView。所以像这样使用,
ImageView img_categlist = (ImageView) row.findViewById(R.id.img_categlist);
img_categlist.setImageResource(imageid);