[英]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.