2015-11-03 28 views
0

我创建了一个应用程序,显示来自sqlite的学生。男性和女性的形象是可绘制的,我想展示它取决于学生的性别。我不知道要应用的代码。这是我的代码。更改列表视图上的图像显示取决于性别Android

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> 

回答

1

使用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)); 
+0

为什么它是一个“?” –

+0

伙计“?”是我使用的三元运算符的一部分,而不是使用if-else梯子 –

+0

好吧,我很抱歉 –

1
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); 
+0

我得到错误 - >无法解析方法'ToString()' –

+0

使用'equals'而不是'=='来比较字符串 –

+0

@ρяσѕρєяK是的,你是对的。使用“equals”或“equalignorecase”。 –

2

你差不多就可以了。在填充列表的同时,您获得了名称和性别的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; 
    } 
0

首先,声明你的ImageView:

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

假设getGender返回一个字符串值(例如 '男' 或 '女')和你的性别形象被命名为 'female_icon' 和“male_icon “:

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); 
}