更改listview上的图像显示取决于Android的性别



我正在创建一个显示sqlite学生的应用程序。男性和女性的形象是可绘制的,我想展示它取决于学生的性别。我不知道要应用的代码。这是我的密码。

public class MainActivity extends Activity {
    List<Student> GetAll;
    DatabaseHelper db = new DatabaseHelper(this);
    ListView lv;
    Context context = this;
    DatabaseHelper dbhelper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dbhelper = new DatabaseHelper(MainActivity.this);
        //Add below lines to your original code
        try {
            dbhelper.createDataBase();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            dbhelper.openDataBase();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //Till here
        GetAll = dbhelper.getAll(index);
        lv = (ListView) findViewById(R.id.list);
        lv.setAdapter(new ViewAdapter());
    }
    public class ViewAdapter extends BaseAdapter {
        LayoutInflater mInflater;
        public ViewAdapter() {
            mInflater = LayoutInflater.from(context);
        }
        @Override
        public int getCount() {
            return GetAll.size();
        }
        @Override
        public Object getItem(int position) {
            return null;
        }
        @Override
        public long getItemId(int position) {
            return position;
        }
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.list_item,null);
            }
            final TextView names = (TextView) convertView.findViewById(R.id.name);
            final TextView gender = (TextView) convertView.findViewById(R.id.gender);
            names.setText(GetAll.get(position).getname());
            gender.setText(GetAll.get(position).getgender());
            return convertView;
        }
    }
}

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout
        android:id="@+id/layout_item"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/imageView"
            android:layout_centerVertical="true"
            android:src="@drawable/male"
            android:layout_alignParentStart="true"
            android:layout_gravity="center_horizontal" />
        <TextView
            android:id="@+id/id"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            />

        <TextView
            android:id="@+id/name"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingTop="6dip"
            android:paddingLeft="6dip"
            android:textSize="17dip"
            android:textStyle="bold" />
        <TextView
            android:id="@+id/gender"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingTop="6dip"
            android:paddingBottom="7dip"
            android:layout_below="@+id/name"
            android:paddingLeft="6dip"/>
    </LinearLayout>
</RelativeLayout>

你已经差不多了。在填充列表时,你得到了name和gender的textViews。您只需要获取ImageView并从可绘制文件夹中设置相应的图像。

@Override
        public View getView(final int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.list_item,null);
        }
        final TextView names = (TextView) convertView.findViewById(R.id.name);
        final TextView gender = (TextView) convertView.findViewById(R.id.gender);
        names.setText(GetAll.get(position).getname());
        gender.setText(GetAll.get(position).getgender());
        // Get ImageView 
        ImageView image = (ImageView) convertView.findViewById(R.id.imageView);
        // Check if it is male or female and set the image
        if(GetAll.get(position).getgender().equals("MALE")){
            image.setImageResource(R.drawable.male_image);
        }else{
            image.setImageResource(R.drawable.female_image);
        }
        return convertView;
    }
    final TextView gender = (TextView) convertView.findViewById(R.id.gender);
    final ImageView imageView = (ImageVIew)convertView.findViewById(R.id.imageview);
    gender.setText(GetAll.get(position).getgender());
    if(GetAll.get(position).getgender().equals("male"))
     {
        imageView.setImageResource(R.drawable.male);
     }
   else
        imageView.setImageResource(R.drawable.female);

使用ImageView.setImageResource根据性别设置ImageView的图像:

final ImageView imgGender = (ImageView) convertView.findViewById(R.id.imageView);
imgGender.setImageResource((GetAll.get(position).getgender().equals("male") ? 
                                R.drawable.male:R.drawable.female));

首先,声明您的ImageView:

ImageView genderImage = (ImageView) convertView.findViewById(R.id.imageView);

假设getGender返回一个字符串值(例如"male"或"female"),并且您的性别图像命名为"female_icon"one_answers"male_con":

genderImage.setImageResource(GetAll.get(position).getgender().equals("female") ? R.drawable.female_icon : R.drawable.male_icon);

一个更好的方法是提供第三个图标,以防性别的价值在某种程度上既不是"女性"也不是"男性"。。。

String genderString = GetAll.get(position).getgender();
if (genderString.equals("female")) {
    genderImage.setImageResource(R.drawable.female_icon);
} else if (genderString.equals("male")) {
    genderImage.setImageResource(R.drawable.male_icon);
} else {
    genderImage.setImageResource(R.drawable.unknown_gender_icon);
}

最新更新