簡體   English   中英

如何在 Android 的 ListView Items 中動態添加 TextView?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM