乐学成语

一、首先上效果图:


二、代码部分 :

(一)布局部分:

1.单个成语的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tvName"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:gravity="center"
        android:text="助人为乐"
        android:textAppearance="?android:attr/textAppearanceLarge"
        />
    <ImageButton
        android:id="@+id/btnSave"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@null"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@id/tvName"
        android:src="@drawable/btnsave"/>
</RelativeLayout>
2.点击后主页面显示的布局:-listview

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="@drawable/bg_animal"
    android:orientation="vertical"
    android:layout_height="match_parent">
    <ListView
        android:layout_width="match_parent"
        android:id="@+id/lvAnimalList"
        android:layout_height="wrap_content"
        android:layoutAnimation="@anim/anim_layout_listview"
        android:listSelector="@drawable/clickbackground">
    </ListView>
</LinearLayout>
3.:主页面的布局:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/bg_ling"
        android:orientation="vertical">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/tvIdiomInfo"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            />
    </LinearLayout>
</ScrollView>
(二)类和数据库:

1.adapter:

public class AnimalAdapter extends ArrayAdapter<Animal> {
    private int resourceId;
    public AnimalAdapter(Context context, int resource, List<Animal> objects) {
        super(context, resource, objects);
        resourceId=resource;

    }

    @NonNull
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Animal animal = getItem(position);
        View view;
        ViewHolder viewHolder;
        if (convertView==null){
            view= LayoutInflater.from(getContext()).inflate(resourceId,null);
            viewHolder=new ViewHolder();
            viewHolder.tvName=(TextView)view.findViewById(R.id.tvName);
            viewHolder.btnSave=(ImageButton)view.findViewById(R.id.btnSave);
            view.setTag(viewHolder);
        }else {
            view=convertView;
            viewHolder=(ViewHolder)view.getTag();
        }
        viewHolder.tvName.setText(animal.getName());
        viewHolder.btnSave.setFocusable(false);
        viewHolder.btnSave.setFocusableInTouchMode(false);
        return view;
    }

    private class ViewHolder {
        TextView tvName;
        ImageButton btnSave;
    }

}
2.dao:

public class AnimalDao {
    private static AnimalDao animalDao;
    private SQLiteDatabase db;

    private AnimalDao(Context context) {
        DBOpenHelper dbOpenHelper=new DBOpenHelper(context);
        db= dbOpenHelper.openDatabase();
    }
    public synchronized static AnimalDao getInstance(Context context) {
        if (animalDao == null) {
            animalDao= new AnimalDao(context);
        }
        return animalDao;
    }
    public List<Animal>getAllAnimals(){
        List<Animal> list=new ArrayList<Animal>();
        Cursor cursor=db.query("animal",null,null,null,null,null,null);
        if (cursor.moveToFirst()){
            do {
                Animal animal=new Animal();
                animal.setId(cursor.getInt(cursor.getColumnIndex("_id")));
                animal.setName(cursor.getString(cursor
                        .getColumnIndex("name")));
                animal.setPronounce(cursor.getString(cursor
                        .getColumnIndex("pronounce")));
                animal.setAntonym(cursor.getString(cursor
                        .getColumnIndex("antonym")));
                animal.setHomoionym(cursor.getString(cursor
                        .getColumnIndex("homoionym")));
                animal.setDerivation(cursor.getString
                        (cursor.getColumnIndex("derivation")));
                animal.setExamples(cursor.getString
                        (cursor.getColumnIndex("examples")));
                list.add(animal);
            }while (cursor.moveToNext());
        }
        return list;
    }
}
3.helper:

public class DBOpenHelper {
    private final int BUFFER_SIZE = 400000;//缓冲区大小
    public static final String DB_NAME = "idiom.db";//保存的数据库文件名
    public static final String PACKAGE_NAME = "cn.edu.bzu.happyidiom";//应用包名
    public static final String DB_PATH = "/data" + Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME + "/databases";//在手机里存放数据库的位置
    private Context context;

    public DBOpenHelper(Context context) {
        this.context = context;
    }

    public SQLiteDatabase openDatabase() {
        try {
            File myDataPath = new File(DB_PATH);
            if (!myDataPath.exists()) {
                myDataPath.mkdirs();//如果没有这个目录就创建
            }
            String dbfile = myDataPath + "/" + DB_NAME;
            if (!(new File(dbfile).exists())) {//判断是否存在,若不存在机导入,否则直接打开
                InputStream is = context.getResources().openRawResource(R.raw.idioms);
                FileOutputStream fos = new FileOutputStream(dbfile);
                byte[] buffer = new byte[BUFFER_SIZE];
                int count = 0;
                while ((count = is.read(buffer)) > 0) {
                    fos.write(buffer, 0, count);
                }
                fos.close();
                is.close();
            }
            SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
            return db;
        } catch (FileNotFoundException e) {
            Log.e("Database", "File not found");
            e.printStackTrace();
        } catch (IOException e) {
            Log.e("Database", "IO exception");
            e.printStackTrace();
        }
        return null;
    }
}
4.animal类:

public class Animal {
    private int id;
    private String name;
    private String pronounce;
    private String explain;//解释
    private String antonym;//反义词
    private String homoionym;//同义词
    private String derivation;//源自
    private String examples;//例子

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPronounce() {
        return pronounce;
    }

    public void setPronounce(String pronounce) {
        this.pronounce = pronounce;
    }

    public String getExplain() {
        return explain;
    }

    public void setExplain(String explain) {
        this.explain = explain;
    }

    public String getAntonym() {
        return antonym;
    }

    public void setAntonym(String antonym) {
        this.antonym = antonym;
    }

    public String getHomoionym() {
        return homoionym;
    }

    public void setHomoionym(String homoionym) {
        this.homoionym = homoionym;
    }

    public String getDerivation() {
        return derivation;
    }

    public void setDerivation(String derivation) {
        this.derivation = derivation;
    }

    public String getExamples() {
        return examples;
    }

    public void setExamples(String examples) {
        this.examples = examples;
    }
}
5.util:

public class DialogUtil {
    public static void showDialog(String result, Context context){
        AlertDialog.Builder builder=new AlertDialog.Builder(context);
        LayoutInflater layoutInflater=LayoutInflater.from(context);
        View view= layoutInflater.inflate(R.layout.dialog_info,null);
        builder.setView(view);
        TextView tvIdiomInfo=(TextView)view.findViewById(R.id.tvIdiomInfo);
        tvIdiomInfo.setText(result);
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });
        builder.create().show();
    }
}
(三)mainactivity:

public class StudyAnimalActivity extends Activity {
    private List<Animal>animalList;
    private AnimalDao animalDao;
    private ListView lvAnimalList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_animal);
        initAnimals();
        lvAnimalList=(ListView)findViewById(R.id.lvAnimalList);
        AnimalAdapter animalAdapter=new AnimalAdapter(this, R.layout.animal_item,animalList);
        lvAnimalList.setAdapter(animalAdapter);
        lvAnimalList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                Animal animal=animalList.get(position);
                String result = animal.getName() + "\n" +
                        animal.getPronounce() +
                        "\n【解释】: "+ animal.getExplain()
                        + "\n【近义词】: " +animal.getHomoionym()+
                        "\n【反义词】: " + animal.getAntonym() +
                        "\n【来源】: "+ animal.getDerivation() +
                        "\n【示例】: " + animal.getExamples();
                DialogUtil.showDialog(result,StudyAnimalActivity.this);

            }
        });
    }

    private void initAnimals() {
        animalDao=AnimalDao.getInstance(this);
        animalList=animalDao.getAllAnimals();
    }
}
(四)manifest:更改入口类:

<activity android:name=".activity.StudyAnimalActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
三、错误部分:


当出现R的错误的时候 ,要看你的res部分有没有错误,如果没有就是系统的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园的建设目标是通过数据整合、全面共享,实现校园内教学、科研、管理、服务流程的数字化、信息化、智能化和多媒体化,以提高资源利用率和管理效率,确保校园安全。 智慧校园的建设思路包括构建统一支撑平台、建立完善管理体系、大数据辅助决策和建设校园智慧环境。通过云架构的数据中心与智慧的学习、办公环境,实现日常教学活动、资源建设情况、学业水平情况的全面统计和分析,为决策提供辅助。此外,智慧校园还涵盖了多媒体教学、智慧录播、电子图书馆、VR教室等多种教学模式,以及校园网络、智慧班牌、校园广播等教务管理功能,旨在提升教学品质和管理水平。 智慧校园的详细方案设计进一步细化了教学、教务、安防和运维等多个方面的应用。例如,在智慧教学领域,通过多媒体教学、智慧录播、电子图书馆等技术,实现教学资源的共享和教学模式的创新。在智慧教务方面,校园网络、考场监控、智慧班牌等系统为校园管理提供了便捷和高效。智慧安防系统包括视频监控、一键报警、阳光厨房等,确保校园安全。智慧运维则通过综合管理平台、设备管理、能效管理和资产管理,实现校园设施的智能化管理。 智慧校园的优势和价值体现在个性化互动的智慧教学、协同高效的校园管理、无处不在的校园学习、全面感知的校园环境和轻松便捷的校园生活等方面。通过智慧校园的建设,可以促进教育资源的均衡化,提高教育质量和管理效率,同时保障校园安全和提升师生的学习体验。 总之,智慧校园解决方案通过整合现代信息技术,如云计算、大数据、物联网和人工智能,为教育行业带来了革命性的变革。它不仅提高了教育的质量和效率,还为师生创造了一个更加安全、便捷和富有智慧的学习与生活环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值