6

我想添加一个 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 的新手。谢谢

4

3 回答 3

3

使用这个代码我希望这是你想要的

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();
              }
        });
}
于 2013-08-14T11:03:41.813 回答
1

我希望这能帮到您..

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);
                }

            });

    }
于 2013-08-14T11:25:02.173 回答
1

创建 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);
于 2020-03-27T00:59:52.020 回答