2015-11-03 25 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); 
} 
相關問題