我想在ListView中动态添加TextView并设置它的值,然后单击我想要获取项目值的项目。
我有一个数组
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>
我的 ListView 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"/>
请帮助我如何将数组中的值设置为listview。我是android.Thanks中的新手
答案 0 :(得分:2)
使用此代码我希望这是你想要的
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();
}
});
}
答案 1 :(得分: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);
}
});
}
答案 2 :(得分:1)
创建ListView很容易。您要做的就是创建: -XML代码: -在您的主XML文件中创建一个元素,其大小和id属性为:
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/mainList"
/>
-另一个 XML文件,您想以List元素的形式,例如textView的from等。在“ layout”文件中:
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是 上下文,第二个类型是您想要显示并传递的数据类型 超级构造函数(ArrayAdapter)的三个值:
1th:您自己的课程所用的上下文
2th:您自己的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文件中建立elemenet 和parent作为对父视图的引用: 现在,轻松使用此方法即可达到目的: 充实您的列表:
LayoutInflater li = LayoutInflater.from(getContext());
:我们传递到将要使用的外部类的上下文
convert = li.inflate(parent , R.layout.elementsForm,false);
我们将膨胀的li对象函数传递给getView()方法的View参数,然后传递给3个值 第一:我们自己的XML文件ID; 第二个:父ViewGroup的实例; 第三个:我们传递假的;
现在我们必须使用getItem函数将getItems传递到位置参数:
String st = getItem(position);
创建TextView对象,并使用convert参数传递到您的xml:
TextView tv = convert.findViewById(R.id.texty);
然后将“文本”设置为您自己的文本视图:
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)我们定义了一个名为country的String数组,其中包含要显示的四个值。
1)在这里,我们将元素'ListView'的ID传递给lv对象,该元素将包含带有View Text的国家/地区值;
2)我们传递了一个匿名类,该类的构造函数使用两个参数,第一个是主类的上下文,第二个是我们想要显示的值
最后操作,以将我们的ListView元素与我们自己的ListView适配器连接 类“ D”:
正在声明此功能:
lv.setAdapter(la);