我正在制作一个应用程序,该程序将吸收学生输入的详细信息。学生可以通过从数据库检索详细信息来查看其记录。到目前为止,我已经对所有这些进行了编码...但是现在,我被困在为这些学生记录中的每一个分配图像时,当学生选择查看记录时会出现这些图像。我在网上看过,但似乎找不到太多与数据库有关的信息...
下面是我的作业中的问题,我一直坚持:
“提供一个界面和相应的操作,用户可以在其中选择图像并进行分配 给学生的图像。图像可以手动存储在应用程序本身中。该应用程序应能够在显示学生信息时显示分配的图像。”
我还附上了图片,以使我的问题更清楚:)
How the images are meant to appear
// activity_main
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Viewstudent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/screen4" />
<ListView
android:id="@+id/listView"
android:layout_marginTop="60dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ListView>
</android.support.design.widget.CoordinatorLayout>
// customlayoutstudent.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<ImageView
android:id="@+id/imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/sno"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="TextView"
/>
<TextView
android:id="@+id/sid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
/>
<TextView
android:id="@+id/fn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
/>
<TextView
android:id="@+id/ln"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
/>
<TextView
android:id="@+id/ge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
/>
<TextView
android:id="@+id/cs"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:text="TextView"
/>
<TextView
android:id="@+id/ag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
/>
<TextView
android:id="@+id/ad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:layout_marginBottom="20dp"
/>
//主要活动
package com.user.project3;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import java.util.ArrayList;
public class Viewstudent extends AppCompatActivity {
DatabaseManager myDb;
ArrayList<String> sno = new ArrayList<String>();
ArrayList<String> sid = new ArrayList<String>();
ArrayList<String> fn = new ArrayList<String>();
ArrayList<String> ln = new ArrayList<String>();
ArrayList<String> ge = new ArrayList<String>();
ArrayList<String> cs = new ArrayList<String>();
ArrayList<String> ag = new ArrayList<String>();
ArrayList<String> ad = new ArrayList<String>();
Integer[] imgid {R.drawable.ic_launcher_background}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(null);
myDb = new DatabaseManager(this);
ListView listView = (ListView)findViewById(R.id.listView);
CustomAdapter customAdapter = new CustomAdapter();
listView.setAdapter(customAdapter);
Cursor res = myDb.getAllDataStudent();
while(res.moveToNext()){
sno.add(("Student Number: " + res.getString(0)));
sid.add(("Student Id: " + res.getString(1)));
fn.add("First Name: " + res.getString(2));
ln.add("Last Name: " + res.getString(3));
ge.add("Gender: " + res.getString(4));
cs.add("Course Study: " + res.getString(5));
ag.add("Age: " + res.getString(6));
ad.add("Address: " + res.getString(7));
}
}
class CustomAdapter extends BaseAdapter {
@Override
public int getCount() {
return sno.size();//return count of array
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup
parent) {
convertView =
getLayoutInflater().inflate(R.layout.customlayoutstudent,null);
TextView id = (TextView)convertView.findViewById(R.id.sno);
TextView studentid =
(TextView)convertView.findViewById(R.id.sid);
TextView fname = (TextView)convertView.findViewById(R.id.fn);
TextView lname = (TextView)convertView.findViewById(R.id.ln);
TextView gender = (TextView)convertView.findViewById(R.id.ge);
TextView coursestudy =
(TextView)convertView.findViewById(R.id.cs);
TextView age = (TextView)convertView.findViewById(R.id.ag);
TextView addr = (TextView)convertView.findViewById(R.id.ad);
id.setText(sno.get(position));
studentid.setText(sid.get(position));
fname.setText(fn.get(position));
lname.setText(ln.get(position));
gender.setText(ge.get(position));
coursestudy.setText(cs.get(position));
age.setText(ag.get(position));
addr.setText(ad.get(position));
return convertView;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.screen4_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.home8) {
Intent intent = new Intent(Viewstudent.this, Home.class);
startActivity(intent);
return true;
}
if (id == R.id.prev3) {
Intent intent = new Intent(Viewstudent.this, Addrecord.class);
startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
}
}
答案 0 :(得分:0)
如果将学生图像保存在设备中,则可以在用户输入学生数据时打开图库,然后如果使用sqlite则将该图像另存为数据库中的blob。将图像另存为Blob将允许您将其检索为字节数组然后您可以将此图像显示为列表中imageview的位图。 在此链接中,您可以找到处理android中的blob的示例
答案 1 :(得分:0)
注册学生或将他的记录添加到数据库时,您可以做一件事,只需为该学生的用户名/名称分配 ImageID 。
这样,每个学生将在数据库中分配1张图片。在获取该特定学生的信息时,您也需要获取该图像ID,并且使用switch循环仅显示与该imageId相关联的 drawable 图像。