HappyIdiom之六(2)点击动物类列表中的每一项以对话框的形式显示该成语的详细信息
来源:互联网 发布:淘宝怎么申请子账号 编辑:程序博客网 时间:2024/04/30 13:12
目标:点击动物类列表中的每一项以对话框的形式显示该成语的详细信息
Step1:自定义弹出对话框的布局showview.xml文件
<?xml version="1.0" encoding="utf-8"?><!-- 关于页面的xml文件 --><ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scrollbars="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/bg_ling" android:orientation="vertical" > <TextView android:id="@+id/show_idiom" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="false" android:textColor="#000000" android:textSize="20sp" /> </LinearLayout></ScrollView>
Step2:修改Study_AnimalActivity.java
public class Study_AnimalActivity extends ListActivity {private List<Map<String, Object>> data;private List<Idiom> idioms;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_study__animal);getData();SimpleAdapter simpleAdapter = new SimpleAdapter(this, data,R.layout.study_animal_item, new String[] { "idiom" },new int[] { R.id.idiom }) {// 重了基类的getView()方法,将每一项的按钮组件和对应的事件进行绑定@Overridepublic View getView(final int position, View convertView,ViewGroup parent) {View view = super.getView(position, convertView, parent);final ImageButton imageButton = (ImageButton) view.findViewById(R.id.save);imageButton.setFocusable(false);//这两句是关键imageButton.setFocusableInTouchMode(false);//这两句是关键imageButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(Study_AnimalActivity.this, "收藏喽!",Toast.LENGTH_LONG).show();}});return view;}};setListAdapter(simpleAdapter); }// 当点击列表项的话弹出对话框,不知道为何列表项中出现按钮元素时,此方法就不起作用了?@Overrideprotected void onListItemClick(ListView l, View v, int position, long id) {super.onListItemClick(l, v, position, id);Idiom idiom = idioms.get(position);String result = idiom.getIdiom() + "\n" + idiom.getSpell() + "\n【解释】: "+ idiom.getExplain() + "\n【近义词】: " + idiom.getHomoionym()+ "\n【反义词】: " + idiom.getAntonym() + "\n【来源】: "+ idiom.getDerivation() + "\n【示例】: " + idiom.getExamples()+ "\n【英语翻译】: " + idiom.getEnglish();showDialog(result);}private void showDialog(String result) {AlertDialog.Builder builder = new AlertDialog.Builder(this);LayoutInflater layoutInflater = LayoutInflater.from(this);View view = layoutInflater.inflate(R.layout.showidiom, null);builder.setView(view);TextView textView = (TextView) view.findViewById(R.id.show_idiom);textView.setText(result);builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.create().show();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_study__animal, menu);return true;}private void getData() {IdiomDao idiomDao = new AnimalDao(this);idioms = idiomDao.getIdioms();data = new ArrayList<Map<String, Object>>();for (int i = 0; i < idioms.size(); i++) {Map<String, Object> map = new HashMap<String, Object>();map.put("idiom", idioms.get(i).getIdiom());data.add(map);}}}
Step3:运行测试
Tip:这部分在测试时总是达不到想要的效果,点击每个成语并不弹出对话框,通过google搜索发现是因为在列表项中如果出现按钮能够获取焦点的组件时,就会出现无法单击每一列表项的情况。
解决办法:使imageButton不能够获得焦点
imageButton.setFocusable(false);
imageButton.setFocusableInTouchMode(false);//这两句是关键
分析:
由于除了动物类,其他类的成语当打开点击每一项后都要弹出对话框,而这个对话框的效果是统一的,所以我们单独将showDialog方法封装到common包的DetailDialog类里。
- HappyIdiom之六(2)点击动物类列表中的每一项以对话框的形式显示该成语的详细信息
- 个人完成案例之乐学成语(显示所有动物类成语的列表和每条成语的详细信息)
- HappyIdiom之六(1)实现动物类列表的显示
- 综合项目之乐学成语(显示所有动物类成语的列表)
- 乐学成语实现之四:显示所有动物类成语的列表
- 乐学成语——显示所有动物类成语的列表
- 乐学成语——显示所有动物类成语的列表
- 6.乐学成语----------显示每条成语的详细信息
- 5.乐学成语-----------显示动物类成语列表
- 乐学成语实现之五:显示每条成语的详细信息
- 乐学成语——显示每条成语的详细信息
- swing中JList控件使用:每一项以 图片+文字(文字在图片的下面) 的形式显示并且在水平方向排列
- 乐学成语——显示每个成语的详细信息
- ViewPager点击每一项设置的监听
- react实现点击按钮添加一项(开始显示一项默认的) 点击每项按钮添加对应的小项
- 乐学成语(HappyIdiom)
- 乐学成语(HappyIdiom)
- 以DLL形式加载的自动更新的显示对话框
- 阶乘因式分解(一)
- 大小端转换
- 使用 Unity 3D 製作 2D 遊戲的重點做法
- Linux服务器性能评估与优化
- 回合制游戏-------------------------------------------建模(bridge模式)
- HappyIdiom之六(2)点击动物类列表中的每一项以对话框的形式显示该成语的详细信息
- hibernate读取hbm.xml文件报错Caused by: java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
- Famous Remark
- Web开发者必知的8个超实用API
- bochs启动报错:Message: ROM: System BIOS must end at 0xfffff
- python rpc framework ---- callme/multiprocessing.managers
- MFC实现打开、保存文件对话框和浏览文件夹对话框
- mysql取得查询结果中随机的一条数据
- 从Java Apk中调用 Flex Air Apk 的方法