[英]In Android, given a ListView of items with TextView and RadioGroup, how to add items dynamically?
[英]How to add A TextView Dynamically in the ListView Items Android?
我想添加一个 TextView 并在 ListView 中动态设置它的值,并在单击项目时获得单击项目的值。
我有一个数组
String[] statesList = {"listItem 1", "listItem 2", "listItem 3"};
我的TextView XML是
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp"
android:textStyle="bold"
>
</TextView>
我的列表视图 XML
<ListView
android:id="@+id/list"
android:choiceMode="singleChoice"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginTop="10dp"
android:layout_width="290dp"/>
请帮助我如何将数组中的这些值设置为列表视图。我是 android 新手。谢谢
使用此代码我希望这是你想要的
public void showstatesList() {
listView = (ListView) findViewById(R.id.list);
String[] statesList = {"listItem 1", "listItem 2", "listItem 3"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, statesList);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
int itemPosition = position;
String itemValue = (String) listView.getItemAtPosition(position);
// Toast.makeText(getApplicationContext(),
// "Position :"+itemPosition+" ListItem : " +itemValue , Toast.LENGTH_LONG)
// .show();
}
});
}
我希望这能帮到您..
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView tv;
ListView lv;
String s="";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView) findViewById(R.id.textView1);
lv=(ListView) findViewById(R.id.listView1);
String value[]={"asda","Ansar","Nisam"};
ArrayAdapter<String>adapter=new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1,android.R.id.text1,value);
lv.setAdapter(adapter);
//list item click
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
s=s+("\n")+((String) lv.getItemAtPosition(arg2));
tv.setText(s);
}
});
}
创建 ListView 是一件容易的事情。 您所做的就是创建:-XML 代码:--在主 XML 文件中创建一个元素,其大小、id 属性:
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/mainList"
/>
-- 另一个XML 文件,您希望在“布局”文件中制作 List 元素的形式,例如 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):
第一:你自己的班级的背景
2th :您自己的 XML 文件将包含并显示文本视图、音频视图等值...
第三个:我们想要显示的值数组,我们的类将其作为其构造函数的第二个参数
::
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());
:我们传递到将要使用的 outclass 的上下文
convert = li.inflate(parent , R.layout.elementsForm,false);
我们将 inflate li 对象函数传递给 getView() 方法的 View 参数,我们首先传递给 3 个值:我们自己的 XML 文件 ID; 第二个:父 ViewGroup 的实例; 第三个:我们传假;
现在我们必须使用 getItem 函数传递给位置参数来获取项目:
String st = getItem(position);
创建 TextView 对象并使用 convert 参数传递给您的 xml:
TextView tv = convert.findViewById(R.id.texty);
然后将 Text 设置为您自己的文本 View :
tv.setText(st);
现在不要忘记最重要的声明:返回类型方法:返回转换;
-------- -------- ------------- ----------
在这里我们回到我们的“MainClass”,我们创建 ListView 实例,ListAdapter 实例:
`列表视图lv; 列表适配器拉;
` 和 onCreate 方法内部:
0)String [] countries = {"US" , "Canada","Egypt","China"};
1) lv = findViewById(R.id.mainList);
2) la = new MyOwnInnerClass(MainClass.this,countries);
0) 我们定义了一个名为 countries 的 String 数组,其中包含我们想要显示的四个值。
1) 在这里,我们将元素“ListView”的 id 传递给 lv 对象,该元素将包含带有 View Text 的国家/地区值;
2)我们传递了一个匿名类,它的构造函数接受两个参数,第一个是主类的上下文,第二个是我们想要显示的值
将我们的 ListView 元素与我们自己的 ListView Adapter Class 'D' 连接的最后一个操作:
正在声明此功能:
lv.setAdapter(la);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.