Android - 无法在自定义适配器中设置我的imageView

问题描述:

我想根据字符串值设置我的imageview。但图像从未设置。请指导我,如果我在这里做错了。由于Android - 无法在自定义适配器中设置我的imageView

这里是我的代码:

public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    getExpense expense = objects.get(position); 
    EventController controller = new EventController(ctx); 
    View view = convertView; 
    if (view == null) { 
     view = lInflater.inflate(R.layout.view_expense_entry, parent, false); 
    } 
    TextView expenseId = (TextView)view.findViewById(R.id.expenseId); 
    expenseId.setText(expense.getExpenseId()); 
    TextView expenseName = (TextView)view.findViewById(R.id.expenseName); 
    expenseName.setText(expense.getExpenseName()); 
    TextView expenseQuantity = (TextView)view.findViewById(R.id.expenseQuantity); 
    expenseQuantity.setText("Quantity : x" + expense.getExpenseQuantity()); 
    ImageView expenseImage = (ImageView)view.findViewById(R.id.ivtype); 
    String expenseType = controller.getExpenseType(expenseId.getText().toString()); 
    if (expenseType.equals("Food")){ 
     expenseImage.setImageResource(R.drawable.food); 
    } 
    else if (expenseType.equals("Beverage")){ 
     expenseImage.setImageResource(R.drawable.drink); 
    } 
    else if (expenseType.equals("Dessert")){ 
     expenseImage.setImageDrawable(ctx.getResources().getDrawable(R.drawable.dessert)); 
    } 
    else if (expenseType.equals("Set")){ 
     expenseImage.setImageDrawable(ctx.getResources().getDrawable(R.drawable.set)); 
    } 

    return view; 
} 
+1

您确定您是否达到条件?您是在调试器中完成的,还是可以添加日志语句?即:Log.i(“DEBUG”,费用类型)。 – wyoskibum

+0

你可以发布错误日志吗? – jasonflaherty

+0

@jasonflaherty找不到错误。 – AndroidWorld12

除了我的关于确保IF conditons得到满足上述评论。你正在使用需要一个整数的setImageResource,然后你使用的是getDrawable。所以你的代码不一致。

试试这个:

int resourceId = 0; 

if (expenseType.equals("Food")){ 
    resourceId = ctx.getResources().getIdentifier("Food","drawable",ctx.getPackageName()); 
} 
else if (expenseType.equals("Beverage")){ 
    resourceId = ctx.getResources().getIdentifier("drink","drawable",ctx.getPackageName()); 
} 
else if (expenseType.equals("Dessert")){ 
    resourceId = ctx.getResources().getIdentifier("dessert","drawable",ctx.getPackageName()); 
} 
else if (expenseType.equals("Set")){ 
    resourceId = ctx.getResources().getIdentifier("set","drawable",ctx.getPackageName()); 
} 
expenseImage.setImageResource(resourceId);