创建 ListView 是一件容易的事。您所做的就是创建:-XML 代码:--在您的主 XML 文件中创建一个元素,及其大小、id 属性:
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/mainList"
/>
--另一个XML 文件,你想制作你的列表元素的形式,比如你的 textView 的 from 等。在“布局”文件中:
elementsForm.xml :
例如,如果您想制作国家/地区列表,请创建一个 LinearLayout 来放置文本
在内部形成“垂直”值到“android:orientation”属性,创建您的 TextView :
<TextView
android : layout_width="match_parent"
android : layout_height="wrap_content"
android : textSize="25sp"
android : id="@+id/texty"
/>
在您的JAVA 文件“ MainClass ”中:
--创建一个内部类并让它继承自 ArrayAdapter 并创建一个带有 2 个参数的构造函数:第一个 Type 是 Context ,第二个 Type 是您要显示它的 Data Type 并将三个值传递给超级构造函数(ArrayAdapter):
1th : 你自己的类所采用的上下文
第二:您自己的 XML 文件将包含并显示文本视图、音频视图等值...
3th:我们想要显示的值数组,我们的类作为其构造函数的第二个参数
::
public class MyOwnInnerClass extends ArrayAdapter<String>{
public MyOwnInnerClass(Context context, String countries[]){
super(cotext , R.layout. , countries);
现在在你的类中覆盖 getView() 方法
@Override
getView(int pos , View convert , ViewGroup vg);
它包含三个参数,可以提供元素位置,并在我们自己的 XML 文件和父视图中制作元素作为对父视图的引用:现在轻松使用此方法并执行您的目的:膨胀您的列表:
LayoutInflater li = LayoutInflater.from(getContext());
:我们传递到将要使用的外类的上下文
convert = li.inflate(parent , R.layout.elementsForm,false);
我们将 inflate li 对象函数传递给 getView() 方法的 View 参数,我们将第一个传递给 3 个值:我们自己的 XML 文件 ID;第二个:父 ViewGroup 的实例;第三个:我们传假;
现在我们必须使用 getItem 函数将 getItems 传递给位置参数:
String st = getItem(position);
创建 TextView 对象并使用 convert 参数传递给您的 xml:
TextView tv = convert.findViewById(R.id.texty);
然后将 Text 设置为您自己的文本 View :
tv.setText(st);
现在不要忘记最重要的声明:return Type 方法:return convert;
-------- -------- ------------- ----------
在这里我们回到我们的“MainClass”,我们创建 ListView 实例, ListAdapter 实例:
`ListView lv; ListAdapter la ;
` 并在 onCreate 方法内部:
0)String [] countries = {"US" , "Canada","Egypt","China"};
1) lv = findViewById(R.id.mainList);
2) la = new MyOwnInnerClass(MainClass.this,countries);
0)我们定义了一个名为国家的字符串数组,其中包含我们想要显示的四个值。
1) 在这里,我们将元素“ListView”的 id 传递给 lv 对象,该元素将由国家值和 View Text 组成;
2)我们传递了一个匿名类,它的构造函数有两个参数,第一个是主类的上下文,第二个是我们想要显示的值
将我们的 ListView 元素与我们自己的 ListView Adapter Class 'D' 连接的最后一个操作:
正在声明此功能:
lv.setAdapter(la);