效果描述:
- 类似电话簿,点击某一联系人,在最上层显示其电话号码
- 长按某一联系人,上方显示电话号码,同时弹出呼叫对话框
效果图:
知识点:
- listview组件的使用
- 构建两个数组,一个数组用于存放姓名,另一个数组对应存放电话号码。通过position参数来获取下标。
- 设置TextView的内容,使用setText(String)方法。
- 上下文菜单ContextMenuDemo的使用
代码:
Layout中:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15dp"/>
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_world"
/>
</LinearLayout>
Mainactivity中:
public class MainActivity extends Activity {
private String[] data={"关羽","张飞","刘备","曹操","诸葛亮","司马懿","刘邦","小乔","貂蝉"};
private String[] pho={"13659850262","13626656662","1522650262","15555250262","13650000062","1365900002","1322999982","13659850262","13659850262"};
private ListView lv;
private TextView mytv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView)findViewById(R.id.lv);
mytv1=(TextView) findViewById(R.id.tv_result);
this.registerForContextMenu(lv);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, data);
ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_single_choice, data);//单选按钮
lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
lv.setAdapter(adapter);//建立listview和数据之间的关联
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mytv1.setText(data[position]+"的电话是:"+pho[position];
}
});
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
mytv1.setText(data[position]+"的电话是:"+pho[position]);
return false;
}
});
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.add(1, 1, 1, "呼叫!");
super.onCreateContextMenu(menu, v, menuInfo);
}}
扩展:
可以和之前的ArrayAdapter 结合使用(详见:Android入门练习——ArrayAdapter绑定ListView),增加图标等等。
效果图: