从数据库检索记录时,如何为学生记录分配图像?

时间:2018-09-26 09:38:37

标签: android database image listview

我正在制作一个应用程序,该程序将吸收学生输入的详细信息。学生可以通过从数据库检索详细信息来查看其记录。到目前为止,我已经对所有这些进行了编码...但是现在,我被困在为这些学生记录中的每一个分配图像时,当学生选择查看记录时会出现这些图像。我在网上看过,但似乎找不到太多与数据库有关的信息...

下面是我的作业中的问题,我一直坚持:

“提供一个界面和相应的操作,用户可以在其中选择图像并进行分配 给学生的图像。图像可以手动存储在应用程序本身中。该应用程序应能够在显示学生信息时显示分配的图像。”

我还附上了图片,以使我的问题更清楚:)

Student entering details

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


   }

2 个答案:

答案 0 :(得分:0)

如果将学生图像保存在设备中,则可以在用户输入学生数据时打开图库,然后如果使用sqlite则将该图像另存为数据库中的blob。将图像另存为Blob将允许您将其检索为字节数组然后您可以将此图像显示为列表中imageview的位图。 在此链接中,您可以找到处理android中的blob的示例

how to store Image as blob in Sqlite & how to retrieve it?

答案 1 :(得分:0)

注册学生或将他的记录添加到数据库时,您可以做一件事,只需为该学生的用户名/名称分配 ImageID
这样,每个学生将在数据库中分配1张图片。在获取该特定学生的信息时,您也需要获取该图像ID,并且使用switch循环仅显示与该imageId相关联的 drawable 图像。