我正在创建一个显示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);
}