Android实验2.2

本文最后更新于:1 年前

2.2 实现如下的程序功能(4 学时)

内容:

1、使用 ListView 实现如下程序界面和功能,如图 4 所示。

2、当选择某一 ListView 子项,TextView(即 MenuDemo 位置)中会显示所选子项内容,如图 5 所示。

3、采用自定义布局 BaseAdapter 修改列表颜色,如图 6 所示。

实验步骤:

1、 先建立一个空工程,在activity_main.xml文件中写入Textview和ListView。
2、 在Mainactivity.java文件中创建listview数组,编写点击listview事件,修改textView里面文字的内容。
3、 在activity_main.xml文件里编写一个按钮,在主函数中编写点击按钮跳转界面,用intent函数,跳入lab2_2_2.java;
4、 建立lab2_2_2.xml文件。编写一个listview
5、 建立item.xml文件,编写一个listview里面的内容的布局。
6、 自定义一个Person类,建立name,des,header等函数。
7、 自定义MyBaseAdapter类,继承BaseAdapter,编写里面的getview方法,在里面修改listview的颜色

代码如下:

activity_main.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity"
xmlns:android="http://schemas.android.com/apk/res/android">


<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="MenuDemo"
android:textSize="24sp" />

<ListView
android:id="@+id/list1"
android:layout_width="match_parent"
android:layout_height="400dp" />
<Button
android:id="@+id/tiaozhuan"
android:layout_width="wrap_content"
android:text="跳转"
android:layout_height="wrap_content">

</Button>
</LinearLayout>

item.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">

<ImageView
android:id="@+id/header"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<TextView
android:id="@+id/des"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>

lab2_2_2.xml

version
1
2
3
4
5
6
7
8
9
10
11
12
13
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/mylistview"
android:divider="@color/purple_500"
android:dividerHeight="3dp"
/>

</LinearLayout>

MainActuvuty.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.example.lab2_2;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
private String []data={"移动计算","计算机组成原理","数据结构","操作系统","面向对象","逻辑设计",};
private ListView listView;
private TextView textView;
private Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.textView=findViewById(R.id.textView);
this.btn1=findViewById(R.id.tiaozhuan);
this.listView=super.findViewById(R.id.list1);
this.listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,this.data));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
textView.setText(data[i]);
}
});
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this,lab2_2.class);
startActivity(intent);

}
});

}
}

MyBaseAdapter.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.example.lab2_2;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class lab2_2 extends AppCompatActivity {
ListView mylistview;

private List<Map<String, Object>> listsimple = new ArrayList();
private int[] headers = {R.drawable.ic_launcher_foreground, R.drawable.ic_launcher_foreground, R.drawable.ic_launcher_foreground};
private List<People> list=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lab2_2_2);
mylistview = findViewById(R.id.mylistview);
for (int i = 0; i < 10; i++) {
People p=new People("2012020019","张志豪",headers[0]);
list.add(p);
}
MyBaseAdapter simpleAdapter=new MyBaseAdapter(this,list);
mylistview.setAdapter(simpleAdapter);
mylistview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@SuppressLint("ResourceAsColor")
@Override

public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
simpleAdapter.setIndex(i);
simpleAdapter.notifyDataSetChanged();
}
});
}


}


people.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.example.lab2_2;
public class People {
private String name;
private String des;
private int header;

public String getName() {
return name;
}

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

public String getDes() {
return des;
}

public void setDes(String des) {
this.des = des;
}

public int getHeader() {
return header;
}

public void setHeader(int header) {
this.header = header;
}

public People() {

}

public People(String des, String name, int header) {
this.name = name;
this.des = des;
this.header = header;
}
}

lab2_2.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.example.lab2_2;

import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class lab2_2 extends AppCompatActivity {
ListView mylistview;

private List<Map<String, Object>> listsimple = new ArrayList();
private int[] headers = {R.drawable.ic_launcher_foreground, R.drawable.ic_launcher_foreground, R.drawable.ic_launcher_foreground};
private List<People> list=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lab2_2_2);
mylistview = findViewById(R.id.mylistview);
for (int i = 0; i < 10; i++) {
People p=new People("2012020019","张志豪",headers[0]);
list.add(p);
}
MyBaseAdapter simpleAdapter=new MyBaseAdapter(this,list);
mylistview.setAdapter(simpleAdapter);
}


}

问题讨论:

1、问题:MainActivity不知道怎么获取listview里position的值,当时用的是listview.setonclicklistener,
解决办法:后来在网上查询可知,用listview.setOnItemClickListener,获取里面的position,然后用textView.setText(data[i])来替换Textview里面的值。
2、问题:在第一个界面写一个按钮,跳转到第二个界面,写lab2_2_2,在Mainactivity用intent跳转,跳转写完之后,启动界面没有反应,
解决方法:在AndroidManifest.xml文件中注册一个活动
在上面加入
活动,就能成功跳转。
3、问题:图文列表建立后不知道怎么给listview上不同的颜色。
解决办法:我是用书上给的方法,后来借鉴老师上课讲的代码,又重新写了一下,重写BaseAdapter,建立people类,建立item.xml文件,在getview()里面用i的奇偶来给listview上不同的颜色。


Android实验2.2
http://example.com/2022/04/21/Android实验2-2/
作者
zzh
发布于
2022年4月21日
更新于
2022年4月21日
许可协议
原文链接: HTTPS://ZHANGZHIHAO-BLOG.GITHUB.IO
版权声明: 转载请注明出处!