在Android开发中,ListView是一个比较常用的控件。它以列表的形式展示具体数据内容,并且能够根据数据的长度自适应屏幕显示。 ListView支持点击事件处理,用户可以用少量的代码实现复杂的选择功能。
设计思路(实现原理)
本项目需要两个Activity ,主界面MainActivity中用List View显示至少三个条目(可以显示同寝室的同学或喜欢的小动物等的文本信息),点击List View的条目,可以进入第二个界面。
如果点击第一个条目,在开启的第二个界面SecondActivity中展示对应的图片或相关的文本信息。 第二个界面有一个Button按钮,点击可以关闭第二个界面。
(1)布局文件代码设计如下:
1、 主界面布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#87CEEB" >
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="#ff00ff"
android:dividerHeight="6sp"
android:background ="#22bbcc"
android:listSelector="#fddccc"
android:entries="@array/pic"/>
</LinearLayout>
2、第2个界面布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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="com.example.myapplication.SecondActivity">
<Button
android:id="@+id/button"
android:layout_width="368dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:text="退出"
app:layout_constraintBottom_toTopOf="@+id/guideline2"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<ImageView
android:id="@+id/imageView"
android:layout_width="300dp"
android:layout_height="400dp"
android:layout_marginLeft="0dp"
app:layout_constraintLeft_toLeftOf="@+id/guideline"
app:layout_constraintTop_toTopOf="@+id/guideline2"
android:layout_marginTop="8dp" />
<android.support.constraint.Guideline
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/guideline"
app:layout_constraintGuide_begin="42dp"
android:orientation="vertical" />
<android.support.constraint.Guideline
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/guideline2"
app:layout_constraintGuide_begin="81dp"
android:orientation="horizontal" />
</android.support.constraint.ConstraintLayout>
(2)主要程序代码如下:
1、 MainActivity 代码:
package com.example.myapplication;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)findViewById(R.id.lv);
// 第一步:对listView添加监听器
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
// 第二步:通过Intent跳转至新的页面
int a=(int)id;
view.setTag(a);
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("id",(Integer) view.getTag());
startActivity(intent);
}
});
}
}
2、Second Activity代码:
package com.example.myapplication;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
public class SecondActivity extends AppCompatActivity {
private Button button;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
button = (Button)findViewById(R.id.button);
// 第一步:对listView添加监听器
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
imageView=(ImageView)findViewById(R.id.imageView);
Intent intent=getIntent();
int temp = intent.getIntExtra("id",0);
switch (temp)
{
case 0:
imageView.setBackgroundResource(R.drawable.qie);
break;//break!!!!!!!!!!!!!!!!!!!!!!!
case 2:
imageView.setBackgroundResource(R.drawable.rabbit);
break;
case 1:
imageView.setBackgroundResource(R.drawable.dog);
break;
}
}
}
(3)运行结果界面:
| |