如何在每行的自定义列表视图中更改textview的背景

时间:2013-10-29 22:57:09

标签: android listview android-listview listadapter android-adapter

我创建了一个双人聊天的应用程序

  • 首先,我必须通过Jsonparser从服务器获取所有数据

  • 有一个自定义列表视图,每行包含“商店,画家,日期时间,评论,ID”

  • 如果你的名字不是空的,则意味着你的评论和viseversa

  • 我想把一个泡泡背景用于评论,表明画家或商店

当我有一个带有多个textview的自定义列表视图时,我不知道如何使用getview,因为包含所有信息的资源数据来自服务器并将其存储到hashmap数组中... hashmap没有位置,因为它是getview方法......

.........一些代码.....

// adding HashList to ArrayList
AllCommentsList.add(map);



adapter = new SimpleAdapter(getApplicationContext(),
                        AllCommentsList, R.layout.list_row_order_comments,
                        new String[] { TAG_COMMENT_ID, TAG_SHOP, TAG_PAINTER,TAG_COMMENT, TAG_DATETIME },
                        new int[] { R.id.tvIdComments, R.id.tvShopSender,R.id.tvPainterSender, R.id.tvComment,R.id.tvDateTimeComments });
                // updating listview
                listViewComment.setAdapter(adapter);

这是我的代码,但我想动态更改Comment textview

的背景

如何把这样的代码放到????

   if (strPainter.equals("null")) {
    tvComment.setBackgroundResource(R.drawable.bubble_green);
    }
   if (strShop.equals("null")) {
    tvComment.setBackgroundResource(R.drawable.bubble_yellow);
    }

1 个答案:

答案 0 :(得分:1)

请勿使用SimpleAdapter。创建一个自定义适配器,覆盖getView并根据当前项目对布局,背景等进行任何操作。

有关简单示例,请参阅Android SDK文件夹中的/samples/android-8/ApiDemos/src/com/example/android/apis/view/List5.java(根据需要下载相应的示例):

private class MyListAdapter extends BaseAdapter {
...
    public View getView(int position, View convertView, ViewGroup parent) {
        TextView tv;
        if (convertView == null) {
            tv = (TextView) LayoutInflater.from(mContext).inflate(
                    android.R.layout.simple_expandable_list_item_1, parent, false);
        } else {
            tv = (TextView) convertView;
        }
        tv.setText(mStrings[position]);
        return tv;
    }
...
}