Android 有条件地设置ListView行中的图像

Android 有条件地设置ListView行中的图像,android,android-asynctask,Android,Android Asynctask,我有一个AsyncTask,它在onPostExecute()中为列表视图设置适配器。 我使用simpledapter: protected void onPostExecute(List<Map<String, String>> result) { super.onPostExecute(result); Activity act = parent.getActivity(); Toast.makeText(act.getApplication

我有一个
AsyncTask
,它在
onPostExecute()
中为
列表视图设置适配器。
我使用
simpledapter

protected void onPostExecute(List<Map<String, String>> result) {
    super.onPostExecute(result);

    Activity act = parent.getActivity();
    Toast.makeText(act.getApplicationContext(), act.getString(R.string.results_completed), Toast.LENGTH_LONG).show();

    ListAdapter adapter = new SimpleAdapter (
            parent.getActivity(), 
            result, 
            R.layout.fragment_results_list_item, 
            RESULTS_MAPPINGS, 
            RESULTS_VIEWS }
    );

    parent.setListAdapter(adapter);
}
受保护的void onPostExecute(列表结果){
super.onPostExecute(结果);
Activity act=parent.getActivity();
Toast.makeText(act.getApplicationContext()、act.getString(R.string.results\u completed)、Toast.LENGTH\u LONG.show();
ListAdapter=新的SimpleAdapter(
parent.getActivity(),
结果,,
R.layout.fragment\u结果\u列表\u项,
结果(1),
结果_视图}
);
setListAdapter(适配器);
}
这里的
parent
是一个
ListFragment

列表视图中的每一行都有一个图像和一些文本。
我可以设置图像调用和指定图像资源,但此图像对于所有行都是相同的

我想要的是有条件地设置图像。列表
结果
中的每个
映射中都有一个特定键,其值将为
“0”
“1”
。根据此值,我希望将该特定行的图像设置为一个(本地)图像资源或另一个图像资源


实现这一目标的最佳方式是什么?(我能想到的唯一方法是首先始终设置相同的映像,一旦
异步任务
完全执行,在
列表片段
中迭代映射并更改需要更改的映射。)

您可能需要使用
BaseAdapter
,并在
getView
中指定要使用的映像。这是一个很好的教程

我们的想法是这样做:

@Override
public View getView(int id, View view, ViewGroup parent) {
    ViewHolder viewHolder;

    if (view == null) {
        view = <inflate your layout>;

        viewHolder = new viewHolder();
        viewHolder.imageView = view.findViewById(<imageViewId>);

        view.setTag(viewHolder);
    } else {
        viewHodler = (ViewHoler) view.getTag();
    }

    if (content.getKey(id) == 0) { // content in your Map<>
        viewHolder.imageView.setImage(<image0>);
    } else {
        viewHolder.imageView.setImage(<image1>);
    }

    return view;
 }

 private static ViewHolder {
     public ImageView imageView;
 }
@覆盖
公共视图getView(int id、视图视图、视图组父级){
持票人持票人;
如果(视图==null){
视图=;
viewHolder=新的viewHolder();
viewHolder.imageView=view.findViewById();
view.setTag(viewHolder);
}否则{
viewHodler=(ViewHoler)view.getTag();
}
如果(content.getKey(id)==0){//地图中的内容
viewHolder.imageView.setImage();
}否则{
viewHolder.imageView.setImage();
}
返回视图;
}
专用静态视图持有者{
公共影像视图;
}