图像未在带有光标的listView内的ImageView中设置

时间:2014-09-05 22:31:49

标签: android sqlite listview simplecursoradapter

@SuppressWarnings("deprecation")
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(
            MainActivity.this, R.layout.user, cursor, from, to)

    {

        @Override
        public View getView(int position, View convertView, ViewGroup parent)
        {
            cursor.moveToPosition(position);
            String s = cursor.getString(cursor.getColumnIndex("USER_SEX"));
            final View row = super.getView(position, convertView, parent);

                LayoutInflater inflater = (LayoutInflater) getApplicationContext()
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

                View sexxx = inflater.inflate(R.layout.user, null);
                sexlogo = (ImageView) sexxx.findViewById(R.id.sex);

            if (s.equalsIgnoreCase("Male"))
                sexlogo.setImageResource(R.drawable.male);

            else 
                sexlogo.setImageResource(R.drawable.female);
            return row;
        }
    };

是Android新手,该应用会将用户添加到SQLite databse,然后使用ListView将数据库中找到的所有用户检索到cursor

我想检查用户的性别,然后在从数据库中检索数据并将其添加到listView之前为他设置徽标。

我已经编辑了我的问题并添加了上面的代码,应用程序没有崩溃,而且图像也没有出现。

任何帮助,请

2 个答案:

答案 0 :(得分:1)

getView函数必须返回要显示的视图。

此代码返回row,这是超类创建的视图。 自定义图片位于sexxx视图中,未使用。

答案 1 :(得分:0)

这是正确的答案,只需删除LayoutInflater,因为super已经膨胀了它。

夸大layout会返回代表root的新xml

{

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            cursor.moveToPosition(position);
            String s = cursor.getString(cursor.getColumnIndex("USER_SEX"));
            final View row = super.getView(position, convertView, parent);

            sexlogo = (ImageView) row.findViewById(R.id.sex);

            if (s.equals("Male"))
                sexlogo.setImageResource(R.drawable.male);

            else
                sexlogo.setImageResource(R.drawable.female);

            return row;

        }
    };